1. Integer转进制的一个类
2. toBinaryString,toOctalString,toHexString.(转为二进制,八进制,十六进制的方法)
3. 如果·数据的大小没有超过byte/short/char的表述范围,则可以自动转型。
4. 零开头为八进制,零x开头为十六进制
5. byte 1个字节 -127~128
short 2个字节 正负3万
int 4个字节 21亿左右
long 8个字节 可以在数字后加l或L表示
6. 浮点数默认类型为double,要将其变为float,需要在后面加入F/f。
7. float 4个字节 3.4*10^38
double 8个字节
8. 如果要进行不产生舍入误差的精确计算应使用BigDecimal类(大小数)
9. 大整数BigInteger(大整数)
10. char类型用单引号表示,用来表示Unicode字符(通用字符型,可以用\u表示Unicode字符编码,两个字节,能够表示0~65535),运算时直接当做整数来运算,可以把0~65535之间的整数直接转型为char
11. 字符串没有在Java中特别定义为类型,而只是一个类(String)
12. boolean类型只占了一位
13. 自动类型转换:容量小的类型可以自动转换为·容量大的类型
14. (char)
byte—>short—>int———>long
: \ // :
float—>double
实线和 \ 为无精度误差,:和 //为有精度误差有可能损失精度
15.可以将整型常量直接赋值给byte,short,char等类型变量,而不需要进行强制类型转换,只要不超过其表述范围。
16. 当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同的值。但是这个值没有任何意义。
17. 所有的二元运算符(+-*/%),都会有类型提升问题,类型会向容量大的提升,会需要用到强制类型转换。
18. 操作数比较打的时候,要留意是否会溢出,特别是整数操作时,如果溢出,要先对一个因子进行转型,来使整个表达式进行提升。(最好使第一个因子进行转型,以免报错)
19. jdk7中用下划线来标识字符的分割
20. final 常量 只能被初始化一次(常量一般用大写和下划线)
21. 变量,方法名(首字母小写和驼峰原则)。
22. 类名(首字母大写和驼峰原则)
23. 小数也可以取余。
24. 逻辑表达符 && || !只能用于布尔类型
25. 位运算符:取反(~),按位与(&),按位或(|),按位异或(^),左移移运算符(<<),右移运算符(>>)。(右移一位相当于除以2取商,左移一位相当于乘2)例如:int a=3*2*2相当于 int b=3<<2 (问题:怎样算3*2最快?)
26. +两边只要有一个字符串,则变为字符串连接符整个结果为字符串
27. 局部变量必须声明和初始化后才能使用。成员变量(实例变量)在方法外,类内声明,若不初始化,系统会自动使用默认初始化(int 0; double 0.0;char '\u0000/' ; boolean false)
28. Math.random() 返回【0,1)之间的小数
29. switch语句,根据表达式是否与case语句相匹配,若匹配择从case一直往下执行,直到遇到break才跳出switch语句,若无case语句相匹配,则执行default语句。switch(表达式)一般是整型和枚举,可以是字符串。
30. 带标签的break和continue (标签是指后面跟一个冒号的标识符,若使用标签,则break和continue会中断到存在标签的地方,当需要从内循环跳到外循环需要用到)
31. 形参:在方法声明时用于接收外界传入的数据。
32. 实参:调用方法时实际传给方法的数据。
33. void没有返回值
34. 必须通过对象调用方法
35. return有两个作用:1.结束方法的运行;2.并指定要返回的数据。
36. 实参的类型,数目,次序必须和所调用的方法声明的形参列表所匹配。
37. Java中进行方法调用中传递参数时,遵循值传递的原则(传递的都是数据的副本)
38. 基本类型传递的是该数据值的copy值
39. 引用类型传递的是该对象引用的copy值,但指向的是同一个对象。
40. 重载的方法,实际是完全不同的方法,只是名称相同而已
41. 构成重载的条件:不同的含义:形参类型,个数,顺序不同;
42. 不构成重载:1.只有返回值不同不构成方法重载;2。只有形参名不同
43. 在方法声明里有static则不需要再new一个类的实例对象,可以直接调用该方法
44. 递归必须定义递归头(解答:什么时候不调用自身方法?如果没有头,将陷入死循环,也就是递归结束的条件)和递归体(解答:什么时候需要调用自身方法)
45. 递归很耗时,比循环耗时太多,要避免使用递归。
46. 光有属性(成员变量)无方法叫做结构体(C语言)
46. 构造方法,用于创建这个类的对象。无参的构造方法可以由系统自动创建
47. JVM的内存可分为三个区域:栈stack、堆heap、方法区method area
48. 栈(连续的内存空间,速度快)描述的是方法执行的内存模型,栈属于线程私有的,不能实现线程共享。
49. 堆(不连续的内存空间,分配灵活,速度慢)用于存储创建好的对象和数组(数组也是对象)。JVM只有一个堆,被所有线程共享。
50. 执行new相当于已经创建好了对象在堆中
51. 方法区(静态区):JVM中只有一个方法区,被所有线程共享,方法区实际上也是堆,只是用于存储类、常量相关的信息,用来存放程序中永远是不变或唯一的内容(类信息【Class对象】、静态变量、字符串常量等)
52. 构造器也叫构造方法(constructor) 用于对象的初始化;要点:1.通过new关键字调用;2. 构造器虽然有返回值,但是不能定义返回值类型(返回值类型肯定是本类),不能在构造器里使用return返回某个值。3.若我们未定义构造器,则编译器会自动定义一个无参的构造函数,若定义了,则不会自动添加;4.构造器的方法名必须和类名一致
53. 构造器中的this表示创建好的对象;构造方法的第一句总是super()【可以省略,但是若省略,系统会1自动调用】
54. 垃圾回收原理和算法:满足两个基本事情(1.发现无用对象;2。回收无用对象占用的内存空间);相关算法(引用计数法【堆中每一个对象都有一个引用计数,被引用一次,计数加1,被引用变量值变为null,则计数减1,直到计数为0,则表示变为无用对象】和引用可达法【根搜索法:程序把所有引用关系作一张图,从一个节点GC ROOT开始,寻找对应的引用节点,找到这个节点以后,继续寻找这个节点的引用节点,当所有的引用节点寻找完毕之后,剩余的节点则被认为是没有被引用到的节点,即无用节点】)
55. 通用的分代垃圾回收机制基于:不同对象的生命周期是不一样的,因此,不同生命周期的对象可以采用不同的回收算法。
56. System.gc()【程序建议GC启动,不是调用GC】
57. 可通过this来调用构造器 ,且构造器的调用必须位于第一句。
58. this不能用于static方法中。
59. 在程序中产生二义性之处,应使用this来指明当前对象;普通方法中,this总是指向调用该方法的对象;构造方法中,this总是指向正要初始化的对象。
60. static声明得成员变量为静态成员变量,也称为类变量,普通的变量和方法从属于类
61. 不能在静态方法里使用非静态的方法和属性
62. 构造方法用于对象的初始化,静态方法用于类的初始化,在静态初始化块中不能直接访问非static成员。
63. 先初始化父类的静态初始化块,在初始化子类的静态初始化块(构造方法执行的顺序一样)
64. 包名:域名倒着写,再加上模块名
65. 包一定要位于非注释第一句
66. java.awt :画窗口; java.net:包含执行与网络相关的操作的类;java.lang:包含一些Java语言的核心类(String,Math,Integer,Syst等,无需导入便可直接使用),提供常用功能;java.util:包含一些实用工具类(设置系统特性,使用日期日历等)
67. 若导入的包里有同名的类,则直接指明类的位置(cn.strt.oo.Data【cn.strt.oo是包,Data是类】)
68. 静态导入(import static 包.类.静态属性)
69. 面向对象的三大特征:继承、封装、多态
70. Java中只有单继承,只有一个直接父类(Java的接口可以多继承,类只能单继承)
71. 子类可以继承父类的全部属性和方法,除了父类的构造方法,但不可以直接访问父类的私有属性和方法。
72. 如果定义一个类时,没有调用extends ,则父类是java.lang.Object(可以使用Ctrl+t方便查询继承关系)
73. instanceof(对象 instanceof 类)用于判断对象是否是右边类或子类创建的对象,是,返回true,否,返回false
74. 重载(overload)是一个类内多个同名的方法;重写(override)是子类重写父类的方法(可用子类的行为替换父类的行为,即子类方法覆盖父类方法)
75. 重写保证方法名和形参列表一致;返回值类型和声明异常类型,子类小于父类;访问权限,子类大于等于父类。
76. 打印对象实际上就是调用toString()方法
77. “==”代表比较双方是否相同,如果是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一个对象。
78. equals是提供定义对象内容相等的逻辑
79. super是直接父类对象引用,可以通过super来访问父类中被子类覆盖的方法或属性。
80. 访问权限:public>protected>default>private
81. 封装中:自动生成set和get方法:右击->Source->Generate Getters and Setters(对于boolean类型是is方法)
82. 多态是方法的多态,不是属性的多态(多态与属性无关);多态有三个必要条件:继承,方法的重写,父类引用指向子类对象
83. 自动向上转型(例如子类可以自动转为父类),强制向下转型
84. final:修饰变量(被修饰的变量,一旦赋了初值,就不能被重新赋值),修饰方法(该方法不可被子类重写,但是可以被重载),修饰类(修饰的类不能被继承)
85. java.lang包中String类被final修饰,于是不能被继承
86. 数组的的长度是确定的(数组一旦被创建,它的大小就是不可变的),其元素必须是相同类型的,数组类型可以是任何数据类型,包括基本类型和引用类型。
87. for each循环:用于读取数组元素的值,不能修改元素的值,例如:for(int m:a)【把数组a里面的值放到m中】