文章目录
一:static 为什么不能定义在方法里
解答:
第一个方面:
static是成员变量及方法的修饰符,是属于类本身的数据字段
第二个方面:
在方法体中定义的变量称之为局部变量,方法体执行结束后,局部变量会自动销毁。
而static 定义的变量是一个静态的变量,它的作用肯定是为了让这个变量内外界都能被访问或读写,所以我们只能在类中去使用static 关键字
结论:
static关键字,只能用来定义成员变量和成员方法。
不能定义局部变量
二:“&&”与 “&”都表示”逻辑与“,那么它们之间的区别在哪里呢?
解答:
“&”会判断两边表达式是否都为true或flase,才会得出最终结果,被称为“非短路”运算符。
“&&”当第一个表达式为 false 时,则不会去判断第二个表达式,被称为“短路”运算符。
三:三元运算符的好处体现在哪里?
解答: 拿三元与 if 代码做比较如下
【1】
boolean b = 20<45?true:false;
【2】
if(20<45)
System.out.println(“true”);
else
System.out.println(“false”);
一行代码就解决了四行代码解决的问题
四:String-Builder与String 区别
“+”虽然可以附加新字符或字符串,但“+”会产生一个新的 String 实例,会在内存中创建新的字符串对象。如果重复地对字符串进行修改,将极大地增加系统开销。
那么我们要反复进行修改字符串,且不想大量消耗系统时该怎么做?
解决办法: 使用 String-Builder类,大大提高了频繁增加字符串的效率
五:Java 虚拟机内存消耗待尽,如何解决?
如果Java 虚拟机内存消耗待尽,它将不会执行垃圾回收处理,这种时候该怎么办呢?
解决: Java 提供了 System.gc() 方法来强制启动垃圾回收器
六:异常
class MyException extends Exception{ //创建自定义异常类
String message; //定义 String 类型变量
public MyException(String ErrorMessage) { //父类方法
message = ErrorMessage;
}
public String getMessage() {
return message;
}
}
public class Captor { //创建类
static int quotient(int x,int y)throws MyException{ //定义方法抛出异常
if(y<0) { //判断参数是否小于0
throw new MyException("除数不能是负数"); //异常信息
}
return x/y;
}
public static void main(String[] args) {
try { //try 语句包含可能发生异常的语句
int result = quotient(3,0);
}catch (MyException e) { //处理自定义异常
System.out.println(e.getMessage());
}catch(ArithmeticException e) { //处理 ArithmeticException 异常
System.out.println("除数不能为0");
}catch (Exception e) { //处理其他异常
System.out.println("程序发生了其他的异常");
}
}
}
提问: 我不太能理解,为什么我调用quotient()方法并传递3和0两个参数进去后,该方法明明是针对抛出异常交给 MyException 来进行处理
那么当经过代码 return x/y 时,会发生异常,但为什么却是交给 catch(ArithmeticException e) 这个语句块里执行,不太明白,明明不是抛出给MyException 来进行处理吗。
经过我自己的思考后,我是这么理解的:
角度一:
抛出的异常类型为 ArithmeticException 所以会交给catch(ArithmeticException e)来执行
角度二:
在代码执行中,若出现了系统自带的异常,则优先处理系统自带的,而不会交给抛出的指定异常类才处理。
角度三:
return x/y; 这条代码发生了异常,它并没有抛出给方法外给 MyException 来处理,而是由系统直接拦截后锁定为 ArithmeticException 异常类型后,所以会由catch(ArithmeticException e)来执行
七:集合与数组区别
1、数组的长度是固定的,集合的长度是可变的
2、数组用来存放基本类型的数据,集合用来存放对象的引用
八:为何需要实现Comparable接口,Comparable 接口的意义和用法
为何需要实现Comparable接口,Comparable 接口的意义和用法(这篇博客写的淋淋尽致,感谢博主分享)
九:java中System.in.read();是什么意思
System.in.read()可以实现输入字符,返回字符的Unicode码,但是缺点是只能输入一个字符
System.in.read() 返回的是输入数值的 ASKII 码(一个 int 整数)。
十:getClass()的作用
getClass() 返回此 Object 的运行时该对象的类. 该方法返回一个Class对象, 可以通过该对象可以获取某个类的相关信息, 如构造方法 属性 方法 等。
举例:
class Student{
…
}
那么:
Student s = new Student();
s.getClass() 得到的是内存中实实在在存在的Student 这个类