java杂记
我最近在找工作,要复习java基础和之前学过的一些知识,看过之前在培训班学习时记的笔记,发现其中的一些知识点还是蛮重要的,因此准备把自己记的笔记上传到博客上,以后便可在乘车之类的闲暇时间来看看了。希望也能对其他人有些许的帮助。
基础杂记
以下为Java基础的杂记,是刚开始学习时记的散装知识点:
- java8种基本类型,5种引用类型:类,接口,数组,枚举,标注;
- 面向对象的特征 :
封装:属性私有化,方法公开化,实现序列化。
抽象:找出事物的共性,并将其归为一个类。
继承:单继承,接口可多继承
多态:依靠父类或接口定义的引用变量可指向子类或其实现类的实例对象 - eclipse快捷输入提示设置 :
window–>preferences–>java–>Editor–>Content Assist - 取计算机当前月份:
Calendar c = Calendar.getInstance(); int month = c.get(Calendar.MONTH+1);
- 读取随机数
Random num = new Random(); for(int i = 0;i < 10;i++) { System.out.println(num.nextInt(100));//括号内100限定范围 }
- 代码调试:
断点:程序终端执行的标志(双击代码行号,重复操作取消)
快捷键:单步执行:F5步入;F6步进;F7步出
中断调试:Ctrl + F2
继续执行:F8 到下一个断点停止 - 读取键入的字符
import java.util.Scanner;
Scanner sc = new Scanner (System.in);
char char1 = sc.next().charAt(0);
- for each(增强for循环)[只能打印出数组中的元素,不能访问下标]
for(int i : arry){
system.out.println(i);
}
- 读取键入的字符串:
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
String name = sc.nextLine();//用sc.next()读取也是正确的,line,遇到enter键终止,可以读取空格
- 比较字符串:
if(names[i].equals(name)){ //比较数组names[i]是否与name的值相同
}
- ASCII码相关:
英文字母的ASCII码:大写:65–90 小写:97–122
中文的ASCII码范围:第一个字节范围0x81–0xfe 第二个字节范围0x40–0xfe(一个中文占两个字节范围) - java的数学数学函数:
名称 | 值 |
---|---|
平方根 | Math.sqrt(x) |
幂运算 | Math.pow(x,a) 返回结果为double型 |
整数取余 | floorMod(x, a) |
PI | Math.PI |
E | Math.E |
舍入运算 | Math.round(x) round方法的返回结果为Long类型 |
- 抽取方法:选中将要封装的代码块,按住Alt + Shift + m 可将代码块抽取出来封装成函数
- static调用方法:使用类名称调用(在本类中调用可以省略类名)
- 数组工具类:
名称 | 含义 |
---|---|
Arrays.sort(a) | 对数组a进行升序排序 |
Arrays.toString(a) | 将一维数组转化为字符串输出 |
Arrays.deepToString(a) | 将二维数组转化为字符串输出 |
int[] arr1 = Arrays.copyOf(a, 5); | 后一个参数为新数组的长度 |
Arrays.fill(a, 100); | 将数组a的元素设置为100 |
Arrays.binarySearch(a,45) | 在数组a中查找45(要先对数组进行排序) |
int[] arr1 = Arrays.copyOfRange(a,3,6) | 复制数组a的第3号元素开始,到第6号元素结束(不含)到arr1中 |
- 创建变量时,不带小括号为属性,带小括号为方法,对象
- 对象是类的实例,类是对象的抽象,集合
- 变量私有化之后,想要使用时要先将成员方法公开化(set:传输和get:获取)
当想要运行含有私有化数据的函数时,传输数据时用set;想要得到私有化的数据时,用get - 构造函数:
1)默认构造函数不带参数
2)构造函数名必须和文件名一致
3)构造函数没有返回值
4)构造函数不能用return返回具体的值,但可以用return退出方法 - this关键字:
1)方法中局部变量和成员变量重名,想调用成员变量就可以使用 this.变量名 形式访问成员变量
2)在方法中要将调用该方法的对象作为参数传递给另一个方法时,可以将 this 作为实参传给该方法
3)在内部类中调用外部类的成员时,需要使用 外部类名.this.成员名 形式访问
4)构造函数在实例化对象时被JVM自动调用,在程序中调用构造函数,要用 this(参数列表) 来调用【必须放在第一行】,不能像调用其他方法一样 - 访问修饰符:
1)public:所有类都可以访问
2)private:只能在本类中访问
3)protected:在同类或者子类(其他包)可以被访问
4)缺省:包访问权限,只能在同包中使用 - 基本数据类型作为参数传递时,不会改变原有变量,不会受到影响;引用类型作为参数传入类型时,传入的是该对象的引用,在函数中发生改变后,原实参也发生相应的变化
- static关键字的使用:
- 1)静态变量:在希望属性被所有对象共享,需要加上static 对象.变量名或类名.变量名【静态变量可以被赋值修改】调用
- 修饰变量时,只能用于修饰成员变量,不能修饰局部变量
- 2)静态方法:static修饰方法 类名.静态方法名或对象.方法名调用
- 静态方法在类加载后就可以调用;
- 静态方法不能直接调用外部的非静态成员属性,方法(若想调用,可用new 类名. 非静态方法名 调用);
- 静态方法不能使用this关键字
- 使用场景:通常作为工具方法或一个可以产生对象的方法被声明,目的是为了让调用者更加方便,不必创建对象
- 3)静态代码块:用static修饰的代码块。
- 由于类只加载一次,所有静态代码块只会执行一次。通常会用静态代码块对类的成员变量进行初始化
- 静态代码块的注意事项和静态方法类似
- 格式化:
int cnt = 0;
String str = String.format("%05d",cnt++); //把cnt占5个字节,不足的左侧用0补齐,再将其格式化成字符串格式
- 对象初始化: 先父后子,先静后动
- 对象的生命周期:创建 应用 不可见 不可达 收集 终结 空间重新分配
- 垃圾回收机制GC:只要内存没有撑满,不会立刻清理
protected void finalize() throws Throwable(){
super.finalize();//实现资源清理工作,Gc在回收前调用本行代码
System.gc(); //对象进行清理
//一般不要显示调用System.gc(),尽量减少临时变量(匿名对象:没有赋值)使用,对象不用时,最好显示置于null
}
- 以下对象没有指向(垃圾回收器会视情况将其回收):
- 一次性的;如new Cat();
- 不想要的:emp = null;
- 被抛弃的:
Cat c2 = new Cat();
c2 = new Cat("122", "1233", "233", "344",);
//前一句程序被抛弃了
- 组合设计模式:当我们定义一个类时,需要使用另一个类的方法属性时使用,把被使用类当作使用类的成员属性
由于知识点过多,我决定把txt文件上传,毕竟还是要以找工作为先