java中基本数据类型:byte:1字节 short:2字节 int:4字节 long:8字节 float:4字节 double:8字节 char:2字节 boolean:1字节
java中函数的重载定义:
在一个类中可以用同名的函数名,这些相同的函数名的函数实现不同的功能,方便了程序的阅读和程序设计的优化。
但是要保证能再一个类中实现函数的重载,那么要求同名的函数只要它们的参数的个数不同或者参数的类型不同或参数在顺序上类型的不同都可以。
还有函数的重载和函数的返回值类型无关。例如:
public static int add(int a, int b ,int c){
return a + b + c ;
}
public static int add(int a, int b){
return a + b ;
}
public static double add(double a ,int b ,int c){
return a + b + c ;
}
public static double add(int a ,double b ,int c){
return a + b + c ;
}
构造代码块:是类的成员之一,使用{}括起来的一段代码,创建对象时先与构造函数调用
静态代码块:在类加载期间执行,而且只执行一次。静态成员之间可以互相访问,按序执行,静态成员不可访问非静态成员,非静态成员可以访问静态成员,静态成员通过类来访问。
this关键字:this代表其所在函数所属对象的引用,换言之:this代表本类对象的引用
那么什么时候使用this关键字呢? 当在函数内需要用到调用函数的对象时,就用this.
this()的使用:访问当前类的构造函数,而且this()的调用必须是第一条语句。它是为了构造函数的重用。
super()的使用:访问超类的构造函数,必须是第一行代码。子类的构造函数的首行要么是this(),要么是super(),默认是super()。
子类覆盖父类的注意事项:覆盖时,子类方法权限一定要大于或等于父类方法权限;静态方法覆盖父类静态方法,非静态覆盖父类非静态方法。
final使用注意事项:final是最终的意思,如果用它来修饰类的话,那么这个类将不可被继承;如果用它来修饰方法的话,那么这个方法将不能被子类继承后重写;如果用它来修饰变量,则这个变量不能被修改,只能赋值一次,也就变成了常量。
抽象类注意事项:抽象类不可对其创建对象。抽象类可以有抽象函数,也可以有普通函数。如果一个实体要继承这个抽象类的话,那么这个实体一定要对抽象类定义的抽象函数具体化,同时继承了抽象类里的普通函数(可以在实体中重写这个普通函数或者不写默认继承)。如果一个继承的子类没有对抽象类的抽象函数具体化,那么这个子类也一定要定义为抽象类,否则就要对继承的抽象类的抽象函数具体化。
匿名内部类:意思为没有定义名称的内部类,我们知道内部类可以定义在类中,也可以定义在方法函数中。而匿名内部类主要作为函数的参数传递而设置。创建一个匿名内部类,其实等同于创建一个类的子类或一个接口的实现类。
异常的注意事项:可以自定义异常,让自定义的异常继承异常的超类Exception,而RuntimeException运行时异常不需要自定义比如空指针异常、超出边界异常等,因为运行时异常在程序发生异常时会自动抛出。如果父类中定义的方法有抛出异常定义throws ,那么子类在重写这个方法的时候也要抛出这个异常或这个异常的子类。
Thead.yield()方法:意思是让当前线程让出cpu抢占权,具有谦让之意,瞬时的动作
Thread.sleep():让当前线程休眠指定毫秒数
线程的join()方法:线程对象.join()来使用,指的是当前线程等待指定的线程结束后才能继续执行
守护线程:为其他服务提供服务的线程,当其他线程结束后,守护线程便不再运行。设置的方式为:线程对象.setdaemon(true);
数组和集合的区别:数组定义好长度是不可变的、只能存储相同类型的数据,可以储存基本类型数据或引用类型。而集合的长度是可变长的,可以同时存储不同类型的数据,但集合只能存储对象引用类型。集合又分为set集合和list集合,list集合存储的对象是有序的,但对象可以重复的;而set集合存储的对对象是无序的,存储的对象不可以重复。
反射:是通过Class类来描述一个类。这个Class类是不可以直接创建Class类的对象的,要通过其他类来创建Class类的对象,比如Class clazz = Person.class,那么这个Class类对象clazz就是对Person类一个描述,可以对Person类修饰符描述,字段描述,构造方法描述,方法描述等一切类的描述。
jdk中的工具jviualvm打开后无法下载Visual GC插件的解决办法
因为oracle关闭了插件下载地址,所有默认jviualvm是无法通过网络下载插件的,所以我们可以先把插件下载下来,然后导入即可,可以在这个网址上下载jdk版本对应的插件https://visualvm.github.io/pluginscenters.html ,最后在插件界面的已下载标签中的添加插件即可。