数据类型
1.基本数据类型:四类八种。
2.数据范围与字节数不一定相关。如float为4字节表示范围比long的8字节要大。
3.浮点数默认double类型,如要用float,需加F。
4.boolean类型不能进行数据类型转换。
5.对于基本类型来说,==
是进行数值比较;对于引用类型来说,==
是进行地址值比较。
算术运算符
1.对于String字符串类型来说,“+”代表字符串连接操作。
2.byte,short,char三种类型进行运算时,都会被首先提升为int类型,再进行计算。
方法
1.方法重载与方法的返回值无关。
2.当数组作为参数传递到方法中时,传递的是数组的地址值。
3.当方法的局部变量和成员变量重名时,根据就近原则,优先使用局部变量。
数组
1.数组的长度在运行期间不可被改变。
2.静态初始化时,数组先有个默认值,随后立即被赋值。
字符串
1.字符串中的内容永不可变。
2.字符串可以共享使用。
3.字符串效果相当于char[]字符数组,但底层原理是byte[]字节数组。
4.通过双引号""
定义的字符串在字符串常量池中,new
出来的字符串不在常量池中。
关键字
- static
1.静态变量属于类,被所有对象共享。
2.静态方法不能直接访问非静态变量,也不能使用this关键字。
继承
1.Java语言是单继承的(一个类的直接父类只能有一个)。
2.子类必须调用父类构造方法。
匿名
1.匿名内部类在创建对象时只能使用唯一一次。
2.匿名对象在调用方法时只能使用唯一一次。
集合
1.集合是一种容器,用来存储多个数据。
2.集合的长度可以改变。
3.集合存储的是对象,对象的类型可以不一致。
-
List接口
1.有序(存储和取出的顺序相同)。
2.允许存储重复元素。
3.有索引。
-
Set接口
1.不允许存储重复元素。
2.没有索引。
内存划分
Java中的内存总共划分为五个部分。
-
栈(Stack):存放方法中的局部变量。(方法的运行在栈中)
局部变量:方法的参数或者方法{}内部的变量。
作用域:一旦超出作用域,立即从栈内存消失。
-
堆(Heap):凡是
new
出来的东西都在堆当中。堆内存里的东西都有一个地址值:16进制。
堆内存里面的数据都有默认值:
数据类型 默认值 整数 0 浮点数 0.0 字符 ‘\u0000’ 布尔 false 引用类型 null -
方法区(Method Area):存储.class相关信息,包含方法的信息(只存储死信息)
-
本地方法栈(Native Method Stack):与操作系统相关。
-
寄存器(pc Register):与CPU相关,性能非常高。
其他注意
1.ArrayList集合不能直接存储整数,可以存储Integer包装类。
关于编译器
1.对于byte,short,char三种类型的数据来说,如果右侧数据没有超过左侧范围,则编译器补上强转;如果右侧数据超过左侧范围,则编译器报错。
2.如果等号右侧的表达式是一串常量,没有变量参与,则该表达式在编译时就进行了运算,而不是等到程序运行时再计算。“编译器的常量优化”.
3.字符串“重地”和字符串“通话”的哈希值是一样的。
ArrayList集合
- 底层原理是数组,所以查询快,增删慢。
LinkedList集合
- 底层原理是链表,所以查询慢,增删快。
Vector集合
- 底层原理也是数组,不过是单线程的,实现比较慢。(了解)