1. java是基于c++的
2. 存储到什么地方?
程序在运行时,有五个地方可以存储数据:
1) 寄存器: 最快的存储区,因为它处于处理器内部,但是它的数量及其有限,故,寄存器根据需求分配,你不能直接控制
2) 堆栈: 位于通用的RAM中(随机访问存储器),速度仅次于寄存器
3) 堆: 用于存放所有的java对象当new一个对象时,会自动在堆里进行存储分配
4) 常量存储: 存储常量值
5) 非RAM存储
3. 每个基本类型所占的大小(每个基本类型都有包装类)
类型 位 默认值
byte 8 (byte)0
char 16 null
short 16 (short)0
int 32 0
float 32 0.0f
long 64 oL
double 64 0.0d
boolean - false
局部变量如果不赋值,得到的可能是任意值!
boolean : 没有明确指定,仅定义为能够取字面值:true / false
BigInteger / BigDecimal: 属于包装类范畴,支持任意精度的整数/定点数,
public class First {
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) {
// 错误,实际上并未获取任何对象,执行new创建时,数据空间才被分配,其方法才能被外界调用
// 然而若将name声明为static,下面的代码就没有问题
First first = null;
first.name = "hu";
System.out.println(first.name);
// 正确
First first2 = new First();
first2.name = "huw";
System.out.println(first2);
int a = 1;
// 此处,first3在作用域终点就消失了,在作用域外已经不能访问first3了,
// 然而first3依然占据着内存空间,直到被回收
if(a>0) {
First first3 = new First();
}
}
}
4. java中方法参数的传递,传递的是对象的引用!
5. static:
当声明一个事物为static时,就表明这个域或对象不会与包含它的那个类的任何对象实例关联在一起了,,也就是说,即使没有创建对象,也能调用这个方法! -- static 域或对象被所有对象共享!只有一份存储空间!
6. java.lang默认导入到每个java文件中
7. << >> >>>
<<: 左移位操作符,低位补0
>>: 采用有符号扩展:符号为正,则在高位插入0,符号为负,则在高位插入1
>>: 无符号右移,无论正负,都在高位插0
对于char / byte / short 类型的数值进行位移时,先转换为int类型的,且得到的结果也是一个int类型的!
8.java不会自动将int类型转换为bool类型
计算时,最大的数据类型决定了表达式最终的数据类型!!!