1. C++由于要后向兼容C所以某些方面显得复杂,而Java则假设我们只进行面向对象的程序设计。
String s; 这里创建了一个引用,引用不一定有关联的对象;
String s=abc"; 这是引用初始化,用到了java的一个特性:字符串可以用带引号的文本初始化;
String s=new String("abc"); 这是通过构造函数构造一个实例。
2. 有5个存储数据的位置:寄存器,堆栈,堆,常量存储和非RAM存储
寄存器:位于cpu内部,速度最快,数量有限,不能直接控制;
堆栈:RAM中,通过堆栈指针(向下分配向上释放)可以获得CPU直接支持,速度仅次于寄存器。缺点是需要知道确切的生命周期,好移动指针,限制了程序灵活性。
堆:RAM中,编译器不需要知道在堆中数据的生命周期,用户通过new自动分配。缺点是存储和清理慢。
常量:存在代码内部,安全,不会改变。
非RAM存储:数据存活于程序之外,程序不运行时候也可以存在,如流对象和持久化对象,这些可以不依赖于RAM。Java提供了轻量级持久化,也提供了JDBC和Hibernate这样的复杂数据库对象处理。
3. 基本数据类型
byte=8-bits=-128~127
char= 2个byte=16-bits=
int=4个byte=32-bits=-2^31-2^31-1
float=32-bits
double=64-bits
long=64-bits
此外Java还提供了两个高精度计算类:BigInteger和BigDecimal。
4.作用域问题
{
int x=12;
//x available
{
int q=2;
//x和q都有效
int x=34; //java不允许,但是C++可以隐藏更大作用域的变量故而可以。
}
//x有效
}
5. 初始值问题
类的成员变量如果是基本数据类型,java会指定默认值(boolean:false, char:null, int/long/float/double:0),最好做初始化。
如果成员方法中的局部变量(int x;),则不会自动初始化,编译时会报错。
6. static修饰成员变量和方法
静态成员变量:只想为某特定域分配单一存储空间,而不考虑有多少对象或者没有对象。
静态方法:不与类的对象关联,即使没有创建对象也可以调用方法。main()作为应用入口,没有对象也必须可以执行,所以必须是static。
public class StaticTest {
static int i = 47;
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(StaticTest.i);
StaticTest st1 = new StaticTest();
StaticTest st2 = new StaticTest();
System.out.println(st1.i + ":" + st2.i); //47:47
st1.i++;
System.out.println(st1.i + ":" + st2.i); //48:48
}
}
7. javadoc
/** this is an sample javadoc
* @author Codnn
* @version 4.0
*/
@param name description
@throws exception
@return description
8. 编码风格 - 驼峰风格
组成类名的所有单词的首字母都要大写;
方法,成员变量等,首字母要小写。