第一篇 Java基础语法与面对对象概念
chapter1 Java简介与基本概念
- java开发工具名为JDK( Java Development Kit )
- JDK主要包含编译程序,JVM与Java函数库(Libraries) , JRE 中只有JVM与Java函数库
- 在bin目录下有两个重要的文件:[ javac.exe ] 和 [ java.exe ] 分别是编译程序和JVM
- class Helloworld { }
- 关键字 标识符
- 1 Byte =8 bits,每个bit有1和0两种变化,共有2^8 个整数,但要分成正负数,所以要除以2,得到正负数各有2^7个;负数为 -2^7~ -1,正数是0~2^7-1(因为0占了一个数)
- 浮点数中,1744.2会存成1.7442E3 (等同于1.7442* 10^3)
- char字符类型,范围 \u 0000~\u ffff ( Unicode字符 )
- char abc= ' abc ',错误,变量abc是字符类型,最多只能装下一个字符
chapter2 Java的运算与流程控制
- []数组索引 ()方法调用 。成员调用
++ -- +正号 - ~NOT运算(又称补码运算) !逻辑NOT运算 (type)转型 new建立对象实例
* / %
+加 - +字符串连接
<<带符号左移 >>带符号右移 >>>无号右移
>大于 >= < <= == !=
&AND运算 |OR运算 ^XOR运算
&&逻辑AND运算 ||逻辑OR运算
?:条件运算 =赋值运算- 以上运算符号优先级从高到底,右结合有:new , ?:,=
- Java函数库的string 类,所属的concat()方法,只能连接字符串而无法连接数字,用+,可以让字符串与字符或数字连接在一起
- 在位运算中,X&-1=X, X^Y^Y=X
- 位运算符号和逻辑运算符号几乎一模一样,其中只有NOT运算符号 [ ~ ]与之前逻辑运算的NOT运算符号 [ ! ]不同
- 位运算应用在整数类型;逻辑运算应用在boolean值上
chapter3 数组
- new代表建立一个新的实例(Instance)
- for-each循环会自动将数组内的元素由第一个依次取至最后一个 ,如 for(int price:prc)
- arraycopy(prcVan,0,prcLisa,0,prcVan)
- (数组源,从源数组索引值为0的元素开始复制,目的数组,从目的数组索引值为0的位置开始赋值,需要复制元素的长度)
- sort() 方法,可做升序排序,从小到大
chapter4 面向对象程序设计
-————面向对象特色之一:继承
- 子类 extends 父类 ,只能继承一个父类
- 改写(override)只发生在继承关系中 ,区别于 重载(overload)
- 改写方法规则:1.方法名称要相同;2.参数个数与数据类型要一样;3.返回值的数据类型要一样;4.final方法不能被改写
- 重复利用的利器(this,super)
- 构造函数,一般没有任何参数的构造函数称为默认构造函数,特点:1.没有返回值;2.与类名称相同
- Java修饰符,访问权限从高到低:public——>protected——>default——>private
————面向对象特色之二:封装
- 抽象类(abstract):1.不能产生对象实例;2.子类继承父类也必须为父类,Implement
- 接口(interface)算是抽象类的一种,规则:1.只能拥有public抽象方法;2.不能产生对象实例;3.子类要实现抽象方法;4.子接口只可继承父接口;5.属性必须赋初始值;6.没有构造函数
————面对对象特色之三:多态
- 对象转型:分自动转型和强迫转型
- 避免对象强迫转型产生错误——善用instanceof 运算符号
- 当JVM真正到内存中看实例内容,结果发现实例内容与你要转型的类型根本不符合,就会发生[ ClassCastException ]
- 用instanceof来验证对象实例是否属于要强迫转型的类型,true表示可以转型
- Java类架构的根类——Object 类
- 其中有一个重要的方法——toString();
chapter5 对象,变量的生命周期与枚举类型
- 类变量(Class variable),生命周期与类一样长
- 实例变量(Instance variable)
- 方法变量(Method variable),局部变量(Local variab)的一种
- 区块变量(Block variab),隶属于if,switch或循环等区块的变量,属于局部变量
- 枚举类型(Enumerated Type)会自动继承java.lang.Enum,三大优点:1.具有数据类型安全性(Typesafe);2.属性值更具意义;3.switch-case支持枚举类型