1、JVM是Java虚拟机,将Java源文件编译为字节码文件。
JRE是运行时环境,包括JVM和Java核心类库
JDK是Java开发工具包,包括JRE和开发工具
2、关键字是Java中具有特殊函数的字段,而标识符则用来命名变量、方法、类
3、Java数据类型分为基本数据类型和引用数据类型
基本数据类型:数值型(整数、浮点数、字符)非数值型(布尔)
引用数据类型:类、接口、数组
4、自动类型转换:小转大,没有数据的丢失强制类型转换:大转小,有数据的丢失
字符类型在计算时用计算机底层对应的十进制计算:‘A’65 ‘a’97 ‘0’48
byte、short、char类型一般默认被当做int类型,int类型常量也可以自动转换为这三种类型(常量默认是int型)
例子:
byte b = 127;
正确,右边是默认int型,但是可以转换为byter型被左边接收
int a = 127;
byte b = a;
错误,a是int型变量,左边需要为int型或者右边进行一个强制类型转换
char b = ‘a’ + 18;
正确,'a’相当于一个常量,右边是默认int型,但是可以转换为char型被左边接收
char a = ‘a’;
char b = a + 18;
错误,a是char类型,会被当做int型变量进行计算,左边需要为int型或者右边进行一个强制类型转换
5、关系运算符是true和false
逻辑运算符是& | ! ^
6、Random产生随机数
Random r = new Random();
int number = r.nextInt(10);
左闭右开
7、栈内存是方法运行的,存储局部变量,方法使用完就消失
堆内存是new创建的内容(实体、对象、数组等),Java进行回收
8、方法重载:同一个类;相同方法名;参数类型或数量不同(与返回值无关)
9、
10、面向对象和面向过程:面向过程是注重步骤,面向对象则更注重功能
比如:编写一个五子棋程序,面向过程是【棋盘-白子走-绘制图形-判断是否结束-黑子走-…】,而面向对象是【规则系统,黑子和白子行为系统,绘制系统…】
面向过程就像是蛋炒饭,面向对象就像是盖浇饭一样
11、成员变量:在堆内存中;有默认初始值;随对象存在而存在,随对象消失而消失
局部变量:在栈内存中;无默认初始值;随方法存在而存在,随方法消失而消失
12、this关键字解决了局部变量和成员变量的同名问题
方法中加this修饰的是成员变量,this代表的是当前调用方法的引用
13、API是应用程序编程接口,Java API就是JDK提供的各种功能的类,封装起来
14、String类效果上相当于字符数组,底层原理是字节数组
通过new创建的字符串对象,每次new都会申请内存,虽然内容相同·,但是地址不同;直接赋值的话,字符序列相同,JVM只会创建一个String对象
15、StringBuilder中append方法和reverse方法返回的都是对象本身,和String类相互转换:
String s = sb.toString();
StringBuider sb = new StringBuider(s);
16、遍历集合:
for(int i=0;i<array.size();i++){
String s = array.get(i);
sout(s);
}
17、this是子类对象的引用,super是父类对象的引用
18、继承中构造方法的访问特点:
子类中所有构造方法都会访问父类无参构造方法
如果父类没有,则可以通过super显示调用父类带参构造方法;也可以父类创建一个无参构造方法
19、权限修饰符
20、状态修饰符final
修饰成员方法:不能被重写
修饰成员变量:不能被再次赋值,常量
修饰类:不能被继承
21、状态修饰符static
可修饰成员变量和成员方法(无this),属于类
22、
23、封装
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 成员变量private,提供对应的getXxx()/setXxx()方法
封装好处 通过方法来控制成员变量的操作,提高了代码的安全性 把代码用方法进行封装,提高了代码的复用性