java学习笔记(一)
1、在java中定义一个String str;在这里实际上只是定义了一个引用,并不是对象,如果此时在某处调用了str将会产生错误;安全的做法是在创建一个引用的时候同时进行初始化:String str="Hello World!";
2、java中数据存储的地方
(1)寄存器:由于寄存器数量有限,所以系统会根据需要进行分配,而不能由程序员直接控制;
(2)堆栈:它位于通用的RAM(随机访问存储器)中,他可以以仅次于寄存器的速度快速分配内存,对象的引用一般存于堆栈中;java系统必须知道存储在堆栈中所有数据的确切生命周期
(3)堆:编译器不需要知道存储在这里的数据的生命周期,new出来的数据都存放在堆上。
(4)常量存储:直接存放在代码内部,因为他们是不变的;
(5)非RAM存储:可以将某些持久的数据存储在磁盘上。
3、java的每种数据类型都有固定的存储空间,他并不像其他的语言那样随着机器硬件架构的变化而变化,而且所有的数值都有正负号。boolean---1bit char---16bits byte---8bits short--16bits int---32bits long---64bits float--32bits double--64bits;
java提供了两个用于高精度计算的类:BigInterger和BigDecimal
4、作用域
(1)下面的代码在java中是不合法的(在c/c++中合法)
{
int x=12;
{
int x=14;//Illegal
}
}
(2)对象的作用域
用new创建一个对象时对象产生,他可以存活于作用于之外,即new出来的数据只要需要他就一直会存在(通过垃圾回收器回收,从而能够防止内存泄露)
{
String str=new String("this is a string.");
}//end of scope
5、类中基本成员的默认值
在一个类中的成员数据如果没有赋给一个初值,java会确保他有一个初始值,对应如下:
boolean--false、char--'\u0000'(null)、byte--(byte)0、short--(short)0、int--0、long--0L、float--0.0f、double--0.0d
但是对于局部变量,java并不会自动赋予一个初始值,例如在一个方法中定义一个变量
int x;
此时x值时任意的,因此最好在定义的时候初始化一个值。
6、关于return:return用于在一个方法中返回一个值,若一个方法的返回类型是void则表示退出该方法
7、static关键字:static使得定义的数据或者方法属于某一个类,而不是具体的对象
8、逻辑操作符中的短路:在下面的操作中
boolean test, test1=true, test2=true, test3=flase, test4=true, test5=true,
test=test1&&test2&&test3&&test4&&test5;
由于test3=flase这就意味着整个表达式肯定为false,所以没有再继续进行后续的运算(&&test4&&test5),这就是短路一词的来源。事实上如果所有逻辑表达式都有一部分不必计算,那将获得潜在的性能提升。