java 基础部分

# Java 的开发历史 #

    java 最初的时候是由sun(Sun Microsyst NetWok 中文名称是斯坦福大学校园网)公司开展oak 项目衍生出来的技术。


    1995年,sun公司推出Java 技术,于1996 年推出java1.0版本,1997年在中国登陆

    在sun公司的低潮期,最想收购java的是IBM 公司,但是却最终被Orcale公司进行收购。

    在当时通过Java 赚到钱的只有 ibm ,直到现在为止Oracle 只是通过Java 的版权争执获取到一部分的利益。


# Java 的版本 #

    Java 分为三个版本:

        java se : 原先的时候是 J2SE ,后来被更名为java se ,原先是想要做系统应用的,是最底层的内容

        Java me : 原先的时候是 J2ME.后来被更名为 Java me 。

        原先是想要做手机系统的,因为 Nokia 的衰落而衰落

        Java ee : 原先的时候是 J2EE ,后来被更名为 Java ee,

        原先的时候是想要做企业平台的搭建,现在主要开发互联网平台

# java 主要特点 #

- 半开源 : java 程序更加透明,更加容易让人接受

- 面向对象 :让大家更加容易理解和开发

- 可移植性 : 让大家可以进行多平台的开发

- 多线程 :让大家可以同时处理多个任务,但是也带来了高并发等等问题

- 高效的网络处理能力

- 高效的垃圾回收机制 : java 程序去除指针反而使用引用的方式进行替代,让大家可以不用去实时的进行对象的回收(带来的弊端是需要进行优化)

# Java 语言的分类 #

    java 语言既不属于编译型语言,也不属于解释型语言。因为java 文件会在刚开始的时候通过编译器编译成为一个.class文件(编译过程),然后再通过jvm 直接运行.class文件(解释过程,就像c语言打包后成为.exe可执行文件进行使用)

其他意见

    先看下定义:编译型语言:把做好的源程序全部编译成二进制代码的可运行程序,然后,可直接运行这个程序。解释型语言:把做好的源程序翻译一句,然后执行一句,直至结束!Java它首先由编译器编译成.class(字节码)文件,然后在通过JVM从.class文件中读一行解释执行一行,所以它是解释型的语言,也正是由于java对于多种不同的操作系统有不同的JVM,所以实现了真正意义上的跨平台。

    有些答案对JAVA的理解还停留在上古时代或者教科书里。其实,现在用编译型、解释型来分类编程语言已经有点力不从心了。JAVA的第一道工序是javac编译,当然目标文件是BYTECODE。后续可能有三种处理方式:1. 运行时,BYTECODE由JVM逐条解释执行,2. 运行时,部分代码可能由JIT翻译为目标机器指令(以method为翻译单位,还会保存起来,第二次执行就不用翻译了)直接执行;3. RTSJ。继JAVAC之后执行AOT二次编译,生成静态的目标平台代码(典型的就是IBM WEBSHPERE REAL TIME)。有的时候,可能是以上三种方式同时在使用。至少,1和2是同时使用的,3需要程序员手工指定。所以讨论语言得更细化一点了,强类型的、弱类型的,静态的、动态的,GC-based的、手工管理内存的,有没有VM...

# java 开发基础 #

    在java 开发中的最小单位是类,而类中的最小执行单元是方法

    在一个java 文件有两种类(内部类和匿名内部类暂且不说)

-     public class (公共类): 一个java 文件中只可以有一个

-            class (普通类): 一个Java文件中可以有多个

    java 中都是通过在main(主方法)开始运行,而主方法所在的类被称为主类

# java 开发之 CLASSPATH 的配置 #

    CLASSPATH 是jvm进行编译的时候调用的环境,默认是在当前生成.class 文件,但是在某些 java 工具会修改CLASSPATH,所以大家可以在windows 的环境设置进行设置修改,格式是 CLASSPATH 就是.(点),如果在cmd 窗口中进行修改那么可以设置为

    SET CLASSPATH = "位置"

    如果设置为默认环境可以使用 

    SET CLASSPATH = .进行设置

# java 开发之注释 #

    java 之中有三种注释的方法:

        单行注释 : //

        多行注释 : /*  */

        文档注释 : /**  */


    在开发中一般使用单行注释,如果有多行代码出错,或者其他情况使用多行注释,如果是重要的类或者是方法可以使用文档注释进行注释

    ps :如果使用文档注释可以使用 javadoc.exe 生成一个 doc 开发文档 

# java 标识符和关键字 #


    java 中对于方法,类等进行命名的格式被称为使用标识符,对于标识符需要以下几点要求

        -     标识符可以使用数字,字母,_与$ 进行使用

        -     标识符中不可以使用数字进行开头

        -     因为在Java中使用内部类编译生成后会出现$符号,所以如果在代码中使用应该进行避免(开发中一般不会使用)

        -     标识符不可以和关键字(包括保留字),true,false,null(Java中预定义的字面常量)相同

# java 语言的数据类型 #


    java 语言分为两个大类


        - 基础数据类型

            - 分为4类 8 种

                - 整数型

                    - byte

                    - shrt

                    - int

                    - long

                - 浮点型

                    - float

                    - double

                - 布尔型

                    - boolean

                - 字符型

                    - char

        - 引用数据类型

            - 分为三种

                - 枚举

                - 数组

                - 对象

基本数据的默认使用


    整数型默认使用 int

    浮点型默认使用 double 

        ps : double 比 float 的取值范围更加多

基本数据类型的默认数据

    整数型

        - 默认为0

    浮点型

        - 默认为0.0

    布尔型

        - 默认为 false

    字符型

        - 默认为 /u0000

基本数据类型的取值范围

    byte

         -128~127,占用1个字节(-2的7次方到2的7次方-1)

    short 

        -32768~32767,占用2个字节(-2的15次方到2的15次方-1) 

    int 

        -2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1) 

    long

        (-9223372036854774808~9223372036854774807),占用8个字节(-2的63次方到2的63次方-1)

    float

        3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方)占用4个字节 

    double

        双进度浮点数使用42存储,有效位数16位,最大值是 10^16 ~ 10^17

    boolean

         这个类型只有两个值,true和false(真和非真),有人说可以占1/8个字节

    char

# 数据溢出 #

    在java 中,当一个值超过当前数据的大小的时候就会发生数据溢出(也就是数据回转,比如int 的Intager.MAX_VALUE + 1 后就会出现int 的最小值)


    解决的方法:

        对于数据进行更大类型的转换

# 数据类型转型的分类 #


    自动转换

    强制转换

# 字符型数据 #


    在java 中 字符型数据使用char 来表示,在char 中可以定义单个字符,字符包括以下几种

        - 数字(0-9)

        - 小写字母(a-z)

        - 大写字母 (A-Z)

        - 

    在char 数据类型中都可以转换为int 数据的类型,其中取值范围是


        - '0'  (48)  -  '9'  (57)

        - 'a'  (97)  -  'z'  (122)

        - 'A'  (65)  -   'Z'  (90)


# 布尔数据类型 #

    在java 中布尔类型使用Boolean 来进行表示,用来做逻辑的运行,只有 true false 值


# 字符串 #


    字符串不是一种基本数据类型,但是子实际开发中各种语言都会提供字符串的相应描述,而在java中使用 String 来进行表示

    可以使用 + 号进行字符串的连接(最常用)

    在String 类型中有各种方法进行方法,可以去开发文档中进行查看

    ps : 在各种数据类型进行加法计算的时候,碰巧有String 数据对其进行连接操作,如果没有指定操作顺序(也就是在计算操作的时候加上一个()括号),那么就会优先进行字符串的连接操作


    在各种数据类型进行其他计算(加法除外)的时候,碰巧有String 数据对其进行连接操作,如果没有指定操作顺序(也就是在计算操作的时候加上一个()括号),那么就会报错

# 转义字符 #

    如果某些操作需要使用符号或者换行 ,空格 , tab制表符等操作,那么需要进行转义字符对其进行转义,否则的话得到的结果会和自己想要的结果不同

# 运算符 #

    算术运算符( + - * / %  ++  -- )

        ++ 或 -- 的使用规则 :

            如果 ++ (或者 --) 在前,先进行自加然后再进行计算获得值,如果在后,先进行计算再进行 ++ (--)自增或自减

    赋值运算符(  +=   -=    /=    *=   %=    =     <<=       >>=  &=   ^=  |= )


    关系运算符( > < >= <= == !=  )


    条件运算符 (三目(赋值)运算法) 

        关系运算 ? 满足: 不满足

        ps : 三目运算可以嵌套使用 (不建议使用,可读性会变差)

    逻辑运算符 (  && | | ! ) 

    位运算符 (  & | ! ^ 〜 <<   >> >>>   )

    instanceof 运算符 : 是否包含 

# java 的逻辑控制 #

    if 结构 

        针对关系表达式进行判断


        类型

            if (布尔表达式){

                满足时候执行

            }   

            if (布尔表达式){

                满足时候执行

            }else{

                不满足时候执行

            } 

            if (布尔表达式 A){

                A 满足时候执行

            }else if(布尔表达式 B){

                B 满足时候执行

            } else{

                A B  不满足时候执行

            }

    switch 开关语句

        在siwch 语句只可以使用 int char 枚举(jdk 1.5之后) String(字符串 jdk 1.7之后)

    switch(数据){

        case 数据1 :

            满足数据1

         break;

        case 数据2 :

            满足数据2

         break;

        defult :

            不满足数据1 和数据2

    }

    面试题目:

        break retrun continue 的区别:

    循环结构

        for 循环

        面试题:

            for 循环中初始化值和for循环之外定义

        增强for 循环

        while 循环

            do while 结构

            while 结构

    循环控制语句 : break retrun continue 

# 访问权限 #

    public private protected 默认

# 方法的定义与执行 #


    访问权限 返回值  方法名称(参数类型 参数){

        //如果有返回值,要有return

    }

# 方法的重载 #

    重载的方法和返回值类型没有关系只是和方法的参数有关系

# 方法的递归调用 #

    方法自己调用自己(删除文件夹需要删除文件,这个就是递归调用)

    如果使用递归调用容易造成内存溢出(栈溢出)

# 方法的可变参数 #

# 方法的重写 #

# java 的堆栈 #

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容