【JavaSE】基础问题汇总

A:x = (3==3); 前面的=号代表赋值,右边是3等于3,恒成立,等价于true,所以对
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 


构造方法

当定义了一个有参数的无参构造时,我们必须手动指定一个无参构造,否则会报错。因为当指定了有参构造时就不默认分配无参构造了

静态非静态变量

【JavaSE】基础问题汇总

全局变量不初始化可以 但是调用必须要用 对象.变量名 调用

局部变量若不初始化 则会编译报错,提示你去初始化

String

String str = new String("ABC");//这样会在堆内存中开辟新空间,但不会把ABC放入常量池中

String str = "ABC";//这样才会把ABC放入常量池中,下次如果还有以这种方式创建的字符串,就只是添加一条引用过去

继承

【JavaSE】基础问题汇总【JavaSE】基础问题汇总

多态

多态就是子类继承父类,且子类向上转型,(我们知道向上转型为自动转型),向上转型即意味着子类的对象拥有了父类的方法及属性,但是其本身的却丢失了。若是子类中重写了父类的方法,则这个向上转型的对象可以访问这个唯一可以访问的重写的方法。而多态就是利用重写这个点完成的。

在这里我们这样理解,这里定义了一个Wine 类型的a,它指向JNC对象实例。由于JNC是继承与Wine,所以JNC可以自动向上转型为Wine,所以a是可以指向JNC实例对象的。这样做存在一个非常大的好处,在继承中我们知道子类是父类的扩展,它可以提供比父类更加强大的功能,如果我们定义了一个指向子类的父类引用类型,那么它除了能够引用父类的共性外,还可以使用子类强大的功能。

       但是向上转型存在一些缺憾,那就是它必定会导致一些方法和属性的丢失,而导致我们不能够获取它们。所以父类类型的引用可以调用父类中定义的所有属性和方法,对于只存在与子类中的方法和属性它就望尘莫及了---1。

[java] view plain 

final

final修饰的引用类型的变量,其值可以改变,其对象不可改变

【JavaSE】基础问题汇总

字符流

抽象类Reader、Writer。子类FileReader、FileWriter。子类BufferReader、BufferWriter-->内有缓冲区,当缓冲区写满的时候,再把缓冲区数据写到字符流中去。这样可避免每次都执行物理操作,提高输入/输出执行效率。

【JavaSE】基础问题汇总

引用别人的解释:不是不关闭就不能写入,而是已经在内存缓冲中写入,但并没有写到文档中,所以你看不到 你可以加入调用 flush()方法 刷新该缓冲,那个关闭输出流 和flush()方法一样,都可以刷新缓冲,但close可以节省内存,如果总是调用流,但不关闭,导致内存大量占用,程序崩溃