查漏补缺
目录
1. 类的组成
1.1 属性 权限 [特征] 类型 名字 [= 值]
1.2 方法 权限 [特征] 返回值 名字 (参数) [异常] [{方法体}]
1.3 构造方法
构造方法也是方法 构造方法返回值没有(是因为返回值是一个对像)
我们通过new关键字来调用构造方法
构造方法中this指向对象
this不能在一般方法里调用构造方法,但是this可以在构造方法中调用构造方法(只能写在第一行)
构造方法不能来回调用
this();
1.3.1栈溢出错误(StackOverflowError)
public void sleep(){
this.eat();
System.out.print("人可以吃饭");
}
public void sleep(){
this.sleep();
System.out.print("人可以睡觉");
}
1.4代码块(可以理解为特殊方法)
不是调用的,在每一次构造方法执行前,自动执行
{
代码;
}
2. 数组
2.1 冒泡排序(升序)
public int[] permutation(int[] array){
for(int i=i;i<array.lenth;i++){
for(int j = array.lenth-1;j >= 0;j--){
if(array[j]<array[j-1]){
int x = array[j];
array[j] = array[j-1];
array[j-1] = x;
}
}
}
}
2.2 是否存在
3 动态参数 相当于数组
写法 : 参数类型 ...变量名
无参数 相比于 动态优先级高(个人理解)
后面不能有参数(没头)只能存在一个 &&
放在最后不能与数组重载
可以通过index 来访问
可以像数组一样遍历
4 接口
属性、方法都是公共的
默认 public static final
JDK1.8 以后 default 可以修饰具体类
Interface name{
default void name(){
代码;
}
}
4 String
String.trim();
方法实际上trim掉了字符串两端Unicode编码小于等于32(\u0020)的所有字符。
trim()方法实际上的行为并不是 去掉两端的空白字符 ,而是 截取中间的非空白字符。
startsWith()方法用于检测字符串是否以指定的前缀开始。
5 Properties
包: java.util 继承 HashTable
一种类似流的东西
key1=value1
key2:value2
//创建Properties
Properties pro = new Properties();
//加载文件地址
pro.load(new FileReader("D://a.properties"));
//通过key获得value
String key1 = pro.getProperty("key1");
System.out.println(key1);
//创建Property
pro.setProperty("key3","value3");
//遍历Properties
Enumeration<?> enumerations = pro.propertyNames();
while (enumerations.hasMoreElements()) {
Object o = enumerations.nextElement();
String property = pro.getProperty((String) o);
System.out.println(property);
}
6. 自定义异常
- 创建一个自己规定的异常类型
- 继承父类
- 可以添加带参数的构造方法 无参数 有参数
- new一个自定义异常对象 通过throw关键产生异常
7. 垃圾回收器
垃圾回收器 --- 一个线程
栈内存
变量 值交换空间 方法执行临时空间
先压入栈内存的最后回收 用完即回收
堆内存
对象---GC
当对象没有任何引用指向的时候 则视为垃圾
垃圾回收器就将其回收(内存空间)
回收对象之前调用一个方法 finalize
有一个用来管理内存的类Runtime
存储区
常量
类
静态元素