Java 语言基础
1.type size in bits
char 16
byte 8
2.bool类型的数据只能取false,true没有uncertain
3.char可看作是无符号的整型数,它不是使用早期编程语言使用的ASC2字符集,而是采用基于16位的统一的字符集(unicode)。Unicode用高九位为零,低七位与ASC2相匹配。
4.char用单引号引用,string用双引号;单引号只能引用一个字母或四位十六进制数,比如,’a’,
‘\u1653’(\u表示四位十六进制数),java中有八个特殊字符\n,\r,\t,\b,\f,\’’,\\
\ddd 1到3位8进制数据所表示的字符(ddd)
 \uxxxx 1到4位16进制数所表示的字符(xxxx)
 \' 单引号字符
 \\ 反斜杠字符
 \r 回车 
\n 换行 
\f 走纸换页
 \t 横向跳格
 \b 退
5.goto,const是保留字,但在java中并未正式使用,所以不能用这两个保留字作为标识符,在java中通常用break,continue代替goto6.022 八进制
0x22十六进制
7.float []f[] 也可以表示数组
二位数组必须确定第一维的长度f[6][6]
而f[][6]是错的
声明一个数组不需要制定它的大小;但new构造(创建)一个数组需要指定数组大小
int a[][]=new int[5][5];
int []a[]=new int[2][2]
8.一个字符串为null和为空是两个有本质区别的概念,每个字符串数组元素在未初始化前都为null,并不为空,当为空时它已经被分配具体内存空间了。
String a[3];//只是声明一个数组,并未创建,更不用谈初始化了。数组在被创建之后才会被系统自动初始化
9.自动变量是指在方法中声明的局部变量,生命周期同方法体,它不能被static修辞
10.main的多个参数用空格隔开1. 变量在使用前必须初始化,否则产生编译错误。而在类的方法体中定义的成员变量除外,它可由系统根据声明的数据类型自动为变量赋予一个对应的默认值。
2. static静态变量,可以被直接访问,不需要通过类实例访问
3. pringln输出是一个十进制的数
4. 关键字都是小写字母
5. class loader类加载器加载程序运行时需要的所有类
java运算符
1. +和+=这两个操作对字符串对象进行过载,串联两个字符串
2. &是按位运算符的与操作,对两个整数变量对应的位执行布尔与运算。1.0默认的类型是double
3. instanceof用于在运行期检查一个对象所属类型。Ref instanceof Myinterface(可以是类,接口,或数组,但不能是java.lang.Class或一个代表类名称的字符串),它是一个比较运算符 Button a=new Button();Class b=new Class();a instanceof b就是错误的
4. “= =”也适用于所有的对象,但含义不同于基本类型的数值比较,其比较的是两个对象的句柄,并非它们的内容。要想比较两个对象的内容是否一致,应采用适合所有对象的特殊方法equals(),但此方法不适合于基本类型,基本类型直接使用关系运算符“= =”即可
5. &按位于,~按位运算的非运算,&&逻辑与,||逻辑或。
6. 逻辑运算符只能用于布尔值,而不可将一个非布尔值用于表达式。
7. 共有三种移位运算符,左移位运算符<<,右移位运算符>>,无符号右移位运算符>>>;<< 将左边的运算对象向左移动右侧制定的位数,低位补零;>>将左边的运算对象向右移动右侧制定的位数,若值为正高位补零;反之补一;>>>无论正负高位都补0;移位运算符可与等号组合使用,即运算符左边的值移动由右边的值制定的位数,再将结果赋给左边的值
8. java规定运算顺序从左到右,赋值顺序从右到左
9. 在取模运算中余数的正负取决于左操作符
10. NaN(not a number)之间的比较(==)总是假
11. java中的布尔型值只能用true,false来表达,不能用0或1
12. x^y按位运算符,若两个输入位相等则输出位为0,反之为1
13. 逻辑短路是指不需要计算整个逻辑表达式的所有部分来得出最终结果,只需计算部分就可完全确定整个逻辑表达式的结果
java修辞符
1. 凡是用final修辞的类都不能被子类继承,因为其所有的方法也是final。 Final class key{}
2. 一个类中的final方法可以被调用但不可以被重载
3. protected允许父类的子类访问,子和父类可以不在同一个包中。还有一个是默认方式,此时只允许同包内访问,不同包不允许访问
4. 当一个类中有一个abstract的方法时该类必须声明为abstract
5. private成员变量只能由该类的实例来访问,即使它的子类也不能访问
6. instance variable 是一个在类中而不是在方法中声明的变量;local variable是一个在方法中声明的变量;实力变量不能声明为静态变量,否则就是类变量了。
7. 来自同一个类的实例可以相互访问
8. java中规定了一个非内部类即顶层类的访问修辞符只能是public
9. friendly不是java的关键字
10. Class Test{
Static int i=0;
Test(){x++;}
}该类可以知道实例化了多少个对象;一个静态方法只能访问被声明为静态的类属性,因为静态的意味着这个属性是属于类范畴的,而不是类实例。
11. java为了避免发生死锁现象,java语言中的每个对象都有一个锁标志。任何时候该锁只能由一个线程控制。修辞符synchronized用于实现此机制。synchronized只能修辞方法和代码块
12. “final” modifier be used to define a constant member variable 
13. 本地方法的声明 public native void test();注意没有方法体;不能用于类和属性,如同一个抽象方法,本地方法没有方法体,因为它的实现不是由java编写的,而是由其他语言编写的位于java虚拟机之外的函数库。可以通过System.loadLibrary()方法装入
14. 非静态方法可以访问静态变量,静态方法只能访问静态变量;在静态方法中访问非静态方法是不行的,可以实例化一个类对象,通过类对象来访问非静态方法
15. 当一个类继承抽象类时,要么实现所有的抽象方法,(在实现时不必再写关键字abstract)要么就声明为abstract类
16. 一个顶层类不能声明为private
17. final也可以修辞方法
18. native方法也可以声明为static如:public static native void 
19. override重载overload过载 静态方法可以被重载,过载
20.  静态方法是在编译期调用,非静态是在运行期调用
21. transient只能用于修辞变量,被其修辞的变量不能被序列化
22. 非静态的成员变量必须通过类实例来访问,不能通过类名
23. static{//静态代码块},这段代码仅执行一次,即首次装载类时执行
类型转缓和造型
1. 上溯造型肯定是安全的,因为我们是从一个更特殊的类型到一个更常规的类型(<<Thinking in java>>);将一个子类对象作为其父类对象使用的行为。这种造型在运行期才确定完成。同层的兄弟不可以相互转换。(子类名)对象名:这称为强制造型,在上溯造型中编译会通过,但不可能运行。如果是将一个子类的实例赋值给一个父类的变量,用instanceof判断该变量是否是一个子类的实例时也将返回真
2. float是单精度的32位数值;而浮点型数字字符串的默认类型是64为双精度值。
待续