题记
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进阶知识清单》
作者:铭毅天下
转载请标明出处,原文地址:
http://blog.csdn.net/laoyang360/article/details/77860033