Java基础知识清单

题记

Java的学习都是通过Google用到什么就查什么,不成系统。
虽然相比于面向对象语言C++有很大的相似性,但也有很多不同点。
本文就基于《Java语言程序设计》(基础篇)过一遍基础知识点,着重过一遍C++没有的。

知识清单

1、Java语言是区分大小写的。

2、boolean类型是Java的布尔类型,区别于C++的bool类型。
特别注意,boolean类型的判定方法同C&C++,如下:

if (even) {
}

3、字符串变量相等判定,不能使用==,而应该使用equals( )或者equalsIgnoreCase( )方法。

4、字符串和数字间的转换方法

int intValue = Integer.parseInt(intString);
double doubleValue = Double.parseDouble(doubleString);
String s = number + "";

5、方法的静态修饰符的含义?

public static int max(int num1, int num2){
}

6、每调用一个方法时,系统会创建一个活动记录(也称为活动框架),用于保存方法中的参数和变量。
活动记录置于一个内存区域中,称为调用堆栈(call stack)

7、重载方法:方法名称相同,但是参数不同。
注意:不能基于不同修饰符或返回值类型来重载方法。

8、elementType[] arrayRefVar; 声明一个数组时并不在内存中给数组分配任何空间,它只是创建了一个对数组的引用的存储位置。
double[] myList = new double[10];

数组大小:arrayRefVal.length;

数组遍历新方法:

for (double e: mylist){
System.out.println(e);
}

9、对于数组类型参数,参数值是数组的引用,给方法传递的是这个引用。
参数传递的是共享信息,即方法中的数组和传递的数组时一样的。

所以,如果改变方法中的数组,将会看到方法外的数组也变化了。

10、可变长参数列表
1)只能给方法中指定一个可变长参数,
2)参数必须是最后一个参数,任何常规参数都在它之前。

11、Java运行系统会检测垃圾并自动回收它所占用的空间,这个过程称为垃圾回收(garbage collection)

12、如何判定一个变量或方法应该是实例的还是静态的?
如果一个变量或方法依赖于类的某个实例,那它应该就可以定义为实例变量和实例方法。

相反,如果不依赖于类的某个具体实例,就应该将它定义为静态变量或静态方法。

13、给方法传递一个对象,是将对象的引用传递给方法。

14、Java提供了一个将基本数据类型并入对象或包装成对象。
例如:将int包装成Integer类,将double包装成Double类,将char包装成Character类。

15、StringBuilder、StringbBuffer类可以添加、插入、追加新内容,但是String对象一旦创建,它的值就确定了。

16、继承中,关键词super指代父类,可以用于调用父类中的普通方法和构造方法。
这点不同于C++的自动调用,父类的构造方法不会被子类继承。它们只能使用关键字super从子类的构造方法中调用。

17、重写发生在通过继承关系而相关的不同类中;
重载可以发生在同一个类中,也可以发生在由于继承而相关的不同类中。

18、Java 中的所有类都继承自java.lang.Object类。

19、Java 多态和核心:父类的变量可以指向子类对象。

20、动态绑定:方法可以沿着继承链的多个类中实现。JVM决定运行时调用哪个方法。

21、final修饰符
一个被final修饰符修饰的类和方法都不能被扩展。final修饰的类是不能有父类的。
被final修饰的数据域是一个常数。

22、异常处理
最根本的优势:将检测错误(由被调用的方法完成)从处理错误(由调用方法完成)中分离出来。

23、异常处理步骤:
1)声明异常
2)抛出异常

method2() throw Exception{
if (an error occurs){
throw new Exception();
}
}

3)捕method()

try{
invoke method2;
}catch (Exception ex){
Process exception;
}
}
try{
System.out.println(refVal.toString());

}catch(NullPointerException ex){
System.out.println("refVar is null");
}

最好的方式:

if (refVal != null){
System.out.println(refVal.toString());
}else{
System.out.println("refVar is null");

}

24、接口Interface
使用接口或多或少有点像使用抽象类。

public interface T{
int k = 1;  //java 允许忽略 public static final
void p();  //java 允许忽略 public abstract
}

等价于

public interface T {
public static final int k = 1;
public abstract void p();
}

不能使用new操作符创建接口的实例。

一个类可以实现多个接口,但是只能继承一个父类。
定义一个接口和抽象类有如下不同:
1)变量
抽象类变量无限制;接口——所有变量必须是public static final;

2)构造方法
抽象类——子类通过构造方法链调用构造方法,
抽象类不能用new 操作实例化。
接口——没有构造方法,接口不能用new操作符实例化。

3)方法
抽象类——无限制;
接口——所有方法必须是公用的抽象实例方法。

25、类的设计原则
1)内聚性——
类应该描述一个单一的实体,而所有的类操作应该在逻辑上相互配合,支持一个一致的目的。
2)一致性——
遵循标准Java设计风格和命名习惯。
3)封装性——
一个类应该使用private修饰符隐藏其数据,以免用户直接访问它。
4)清晰性——
方法在不产生混淆的情况下进行直观定义。
5)完整性——
类是为不同的用户的使用而设计的。
6)实例和静态——
如果一个变量被类的所有实例所共享,那就应该将它声明为静态的。
7)继承和聚合——
继承 is-a(是一种)关系;
聚合 has-a(具有)关系。
8)接口和抽象类——
is-a可以使用类的继承关系建模;
is-kind-of (是一种),可以使用接口建模。

《Java语言程序设计》(基础篇)第10版 Y.Daniel Liang
这里写图片描述

小结

语言是相通的,由于大学里没有学过Java。所以,从最早的对Java 语言抵触,到Java无从下手,到项目中使用项目近一年时间,有很大收获。

但毕竟属于遇到什么查什么,学习的不够系统。

所以,借助本清单进行了系统的查漏补缺。

Next:进阶篇——《Java进阶知识清单》

2017年09月05日 23:30 于家中床前

作者:铭毅天下
转载请标明出处,原文地址:
http://blog.csdn.net/laoyang360/article/details/77860033
如果感觉本文对您有帮助,请点击‘喜欢’支持一下,并分享出去,让更多的人受益。您的支持是我坚持写作最大的动力,谢谢!

©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页