java记录(2)
仅个人记录
11、java的sort方法?
用法:Arrays.sort(array)/Collections.sort(list),改变排序规则,采用Arrays.sort(array,new Comparator
12、java中操作string的函数方法
int length()//返回长度
char charAt(index)//返回固定位置的值
char[] toCharArray()//字符串变为字符数组
int indexOf(char)||lastIndexOf(char)//返回第一或最后出现字符的位置
String toUpperCase()||toLowerCase()//大小写转换
String[] split(regx||char)//根据给定的正则或字符来拆分字符串
String substring(begin,[end])//从begin到end-1位置字符串的截取
boolean contains(String)//判断是否包含指定内容
String replace(oldChar,newChar)//替换字符
13、JVM部分
jvm虚拟内存可以分为以下几个部分:程序计数器、本地方法栈、虚拟机栈、方法区、虚拟机堆。
程序计数器:jvm执行程序的流水线,存放一些跳转指令。
本地方法栈:jvm调用操作系统方法所使用的栈。
虚拟机栈:jvm执行java代码所使用的栈。
方法区:存放了一些常量、静态变量、类信息等,class文件在内存中的存放 位置。
虚拟机堆:jvm执行java代码所使用的堆。
14、常量池
常量池好处:避免频繁创建和销毁对象影响系统性能,对象实现共享,节约了内存空间和运行时间等。
静态常量池:*.class文件中的常量池,其中包含字面量和符号引用量。
字面量相当于常量,符号引用量包含类和接口的名称,字段名称、方法名称等。
运行时常量池:在jvm装载完类之后,将class文件的常量池载入到内存中,保存在方法区。其中也会保存一些运行期间产生的常量。
15、java中的null
null在java中是一种特殊的值,表示空的引用,只在栈中存放,没有指向堆中的内存空间,注意NulllPointerException。
16、this在类中方法的显隐式调用,静态方法没有this参数,在一个非静态方法中,this参数表示这个方法的隐式参数
class ThisDemo2{
public void method1(){
this.method2();
}
public void method2(){
System.out.println("HelloWorld2");
}
}
public class ThisDemo{
public void method0(){
System.out.println("HelloWorld0");
method1(); //非静态方法可以调用静态方法
}
public static void method1(){
System.out.println("HelloWorld1");
//method0(); 静态方法不能调用非静态方法
}
public static void main(String args[]){
//this.method0(); 报错
new ThisDemo().method0();
ThisDemo.method1();
new ThisDemo2().method1();
}
}
this代表的是当前对象的引用,statics(静态)方法是没有this的方法。
静态成员(方法和变量)属于类本身,在类加载时就分配了内存,非静态成员属于类的对象,只有类的对象创建时才会分配内存,通过对象访问。
17、final不可变
对于类:final修饰的类不可以被继承
对于方法:final修饰的方法不可以被重写,但可以继承
对于引用:
基本类型的引用:final修饰后为常量,不可修改
对象类型的引用:final修饰后,该引用的地址不变,引用对象的内容可变
类成员变量:final修饰的成员变量必须声明时赋值
18、静态代码块、代码块(初始化块)、构造代码块的执行顺序
顺序:静态代码块>代码块>构造代码块。
19、javadoc
根据注释等形成api文档。
20、封装类与自动拆箱
装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。
Integer例子:
Integer number = 22; //自动装箱 == Integer.valueOf(22) //当int值[-128,127]返回同一个对象
int number2 = number;//自动拆箱 == number.initValue()
equals(Object o) 因为原equals方法中的参数类型是封装类型,所传入的参数类型(o)是原始数据类型,所以会自动对其装箱,反之,会对其进行拆箱。
两种不同类型用 == 比较时,包装器类的需要拆箱, 当同种类型用==比较时,会自动拆箱或者装箱。