java记录(2)

仅个人记录

11、java的sort方法?

用法:Arrays.sort(array)/Collections.sort(list),改变排序规则,采用Arrays.sort(array,new Comparator(){重写其中的compare方法})的形式。

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)是原始数据类型,所以会自动对其装箱,反之,会对其进行拆箱。
两种不同类型用 == 比较时,包装器类的需要拆箱, 当同种类型用==比较时,会自动拆箱或者装箱。

原文地址:https://www.cnblogs.com/Zxq-zn/p/13195287.html