【JavaSE】基础问题汇总
B:x = (1>=0);跟A一样,1>=0恒成立,等价于true
C:x == true;这等式想把x赋值为true,要用一个"=",错
D:x = (3 = 3);看A
我的总结:3==3是关系运算符,对于关系运算符:基本类型比较的是值,引用类型比较的是地址
ava的运算符,分为四类:
算数运算符、关系运算符、逻辑运算符、位运算符。
算数运算符(9):+ - * / % ++ --
关系运算符(6):== != > >= < <=
逻辑运算符(6):&& || ! ^ & |
位运算符(7):& | ~ ^ >> << >>>
-------------------------------------------------------------------------
Java基本数据类型:
数值类型:
整型:byte、short、int、long
非整型:double、float
非数值类型:char[字符]、boolean[布尔]
-------------------------------------------------------------------------
自动类型转换
Java支持byte,short,int,long,float,double之间的自动转换,但要遵循一条规则,就是只有低精度类型可以向高精度类型转,反之不可以。也就是byte<short<int<long<float<double,从左向右这个顺序可以完成自动转换;否则需要强制类型转换。
this
public class Dog{
private String name;
private String kind;
private static void bark()
{
String name;
System.out.println(this.name)//加了这个this就是指的是全局变量中的name;
System.out.println(name);//这个指的是本类方法中的name;
}
}
equal
/**
* 常量写前面,才不会引起空指针
* 所以我们一般将变量String str;写后面;
*/
String a = null;
System.out.println(a.equals("2"));//Exception in thread "main" java.lang.NullPointerException
System.out.println("2".equals(a));//false
构造方法
当定义了一个有参数的无参构造时,我们必须手动指定一个无参构造,否则会报错。因为当指定了有参构造时就不默认分配无参构造了
静态非静态变量
全局变量不初始化可以 但是调用必须要用 对象.变量名 调用
局部变量若不初始化 则会编译报错,提示你去初始化
String
String str = new String("ABC");//这样会在堆内存中开辟新空间,但不会把ABC放入常量池中
String str = "ABC";//这样才会把ABC放入常量池中,下次如果还有以这种方式创建的字符串,就只是添加一条引用过去
继承
多态
多态就是子类继承父类,且子类向上转型,(我们知道向上转型为自动转型),向上转型即意味着子类的对象拥有了父类的方法及属性,但是其本身的却丢失了。若是子类中重写了父类的方法,则这个向上转型的对象可以访问这个唯一可以访问的重写的方法。而多态就是利用重写这个点完成的。
在这里我们这样理解,这里定义了一个Wine 类型的a,它指向JNC对象实例。由于JNC是继承与Wine,所以JNC可以自动向上转型为Wine,所以a是可以指向JNC实例对象的。这样做存在一个非常大的好处,在继承中我们知道子类是父类的扩展,它可以提供比父类更加强大的功能,如果我们定义了一个指向子类的父类引用类型,那么它除了能够引用父类的共性外,还可以使用子类强大的功能。
但是向上转型存在一些缺憾,那就是它必定会导致一些方法和属性的丢失,而导致我们不能够获取它们。所以父类类型的引用可以调用父类中定义的所有属性和方法,对于只存在与子类中的方法和属性它就望尘莫及了---1。
final
final修饰的引用类型的变量,其值可以改变,其对象不可改变
字符流
抽象类Reader、Writer。子类FileReader、FileWriter。子类BufferReader、BufferWriter-->内有缓冲区,当缓冲区写满的时候,再把缓冲区数据写到字符流中去。这样可避免每次都执行物理操作,提高输入/输出执行效率。
引用别人的解释:不是不关闭就不能写入,而是已经在内存缓冲中写入,但并没有写到文档中,所以你看不到 你可以加入调用 flush()方法 刷新该缓冲,那个关闭输出流 和flush()方法一样,都可以刷新缓冲,但close可以节省内存,如果总是调用流,但不关闭,导致内存大量占用,程序崩溃