Java基础小知识点
不要低估你的能力,不要高估你的毅力
1.equals()和==的区别?
equals()是Object类中的方法,而==是运算符
equals()比较的是内容,而==比较的是地址
2.传值和传址
传值:例如a=b把b的值传给a修改a并不会影响到b
传址:例如a=b把b的地址传给a,修改a的同时会影响到b
3.为什么我们常说字符串是不可变的?
字符串的底层是char[]类型的字符数组
字符串被创建的时候保存在字符串常量池里(jdk1.7之前字符串常量池在方法区,jdk1.7之后,字符串常量池在堆区),加入有String str="abc",当执行str="def"的时候,字符串常量池这的abc并不会销毁,而是在字符串常量池中添加新的def并将其指向str
4.switch()-case可以接受的类型
jdk1.7之前switch-case所接受的参数只能是整形或者转换为整形后没有损失的类型int charbyte short
还有枚举 enum jdk1.8之后在此基础之上增加了String类型.
5.运行时异常和编译器异常有和异同?
运行时异常 这意味着程序存在bug,如数组越界,0被除,传参不规范
编译器异常也叫检查期异常,编译器直接飙红
十种常见的异常
1.java.lang.NullPointerException空指针异常
2.java.lang.ClassNotFoundException指定的类不存在
3.java.lang.NumberFormatException数字格式异常
4.java.lang.IndexOfBoundsException数组下标越界异常
5.java.lang.IllegalArgumentException方法参数异常
6.java.lang.IllegalAccessException访问权限异常
7.java.lang.ArithmeticException数学运算异常
8.java.lang.ClassCastException数据类型转换异常
9.java.lang.FileNotFoundException文件未找到异常
10.java.lang.NoSuchMethodException方法不存在异常
6.try-catch throws和throw如何使用
try-catch是在方法内部处理异常
throws是在方法参数列表后向上抛出异常(可以抛出多个,所以是复数)被抛出的异常并没有被处理,只是抛给了上层调用
的方法,谁调用谁处理
throw是抛出一个异常,获取这个异常的引用,
单例模式实现的两种方式:
懒汉式
饿汉式
8.String s=new String("xyz");在运算的时候涉及几个String实例
两个"xyz"的时候会有一个实例,然后new String的时候产生一个实例
9.冒泡排序
10一个中文几个字节?
不同编码下一个中文所占的字节数是不同的 另外utf-8下不同中文所占的字节数也不相同可能是2 3 4字节,GBK下是2字节
11.String a=1+9+"abc";和String b="abc"+1+9;中a和b的值是什么?
a的结果为10abc
b的结果为19abc
12.java基础数据类型的大小
抽象类和接口的区别?
接口定义的是规范,表示的是你能干什么,你能炒菜, 能跑步,能做家务
抽象类本质上还是类,所以表示的你是什么,你是人,是动物.
-
其他区别:
*成员变量
接口中的只有常量,默认修饰符是public static final
抽象类中可以有变量,可以有常量
*构造方法
接口中没有构造方法,
抽象类中有构造方法
*成员方法
接口中的只有默认方法和抽象方法
抽象类中可以有普通方法,可以有抽象方法
14.什么是多态?
-
成员变量
编译看左边,运行看左边
-
普通成员方法
编译看左边,运行看右边
-
静态成员方法
编译看左边,运行看右边
总结 编译看左边,运行看左边,即没有发生多态,多态发生的三个前提分别是要有继承关系 父类引用执行子类对象 要有方法的重写因为成员变量和静态成员方法不存在方法的重写所以不发生多态.
-
15..static和final位置问题
public static fianl void method(){}
public final static void method(){}
16.隐式转换问题
注:所有的基本类型对应的包装类都是final的
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流裙: 678241563我们一起学Java!