来自学习Java的笔记,有错误请大家指点。
1、JAVA语言支持的类型分为2种,基本类型和引用类型,应用类型包括类,接口,数组类型,还有一种特殊的null类型,因为String是类,所以字符串也属于引用类型。基本数据类型包括数值型和布尔型,数值型包括整形,字符型,浮点型。
2、整型{byte(2字节),shot(2字节),int(4字节),long(8字节)};字符型{char(2字节)};浮点型{float(4字节),double(8字节)};布尔型{boolean}。
3、整型
byte:内存中占8位,表示范围-2^7~2^8-1
shot:...............16...................-2^15~2^16-1
int:...................32..................-2^32~2^32-1
long:................64..................-2^63~2^64-1
通常给出一个整数默认是int型,如果直接将一个娇小的书(在byte或shot范围内)赋给byte或者shot变量,系统会自动把这个整数当成byte或shot处理;如果一个巨大的整数值(超出int范围),java不会自动将这个整数当成long类型处理,如果希望当作long处理,应在这个整数值后面加L或者l。
4、字符型
ASCII字符集:英文字符,数字,标点,编号。
Unicode字符集:世界上所有书面语言的字符进行统一编号。
java中' '," ",\ 都有特殊用途,如果一个字符串中包括了这些特殊字符,应使用转义符的表示形式。如绝对路径:“c:\codes",应写成"c:\\codes",因为Java会把第一个\当做转义符,第二个\当做反斜杠
5、浮点型
float:第一位是符号位,接下来8位是指数,接下来23位是尾数
double:....................................11...........................52..............
只有浮点型可以使用科学计数法。
java默认的浮点型是double型,如果希望将一个浮点型值当做float型处理,应在该值后写f或F,NaN表非数,和任何值都不等,包括自身。
6、自动类型转换
把一个表数范围小的数值或变量直接赋给另一个表数范围大的变量是,系统将进行自动类型转换。
char
byte->shot->int->long->float->double
当把任何基本类型的值和字符串进行连接运算,基本类型的值将自动类型转换为字符串类型。如果希望把基本类型值转换为对应字符串,可把基本类型值和空串连接。
String str2=3.5f+" "; //将转化为字符串
System.out.println(3+4+"Hello"); //输出7Hello
.............................("hello"+3+4); //输出hello34
.............................("hello"+'a'+7);//输出helloa7
..............................('a'+7+"hello");//输出104hello
*“3+4+hello”先执行“3+4“,先执行2个整数之间的加法,在进行7+“hello”的运算,这时会把7当成字符处理,得到7hello;"hello+3+4"先执行“hello+3"得到hello3字符串,又进行“hello3+4”,4也被当作字符处理,得到hello34。
7、强制类型转换
double d=5.6;
int i=(int)d;
有时会造成溢出。
8、直接量:在程序中通过原代码直接给出的值,如int i=5;5就是一个直接量。
*字符串直接量注意:当程序第一次使用某个字符串直接量时,java会使用常量池缓存他,如果程序后面要用时,java会直接使用常量池中的字符串直接量。
*常量池指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据,它包括关于类,方法,接口中的常量,也包括字符串直接量。
String s0="hello";
String s1="hello";
String s2="he"+"llo";
System.out.println(s0==s1);//true;
.............................(s0==s2);//true;
Java会确保每个字符串常量只有一个,不产生多个副本,s0和s1中“hello”都是字符串常量,它们在编译时就被确定了,所以结果为true;而“he”和“llo”也是字符串常量,连接起来也是字符串常量,s2同样也是常量池中“hello”引用,所以结果也为true。
9、1)除法运算符:如果两个操作数都是整数型,则计算结果为整数型,且除数不能为0,否则引发除零异常。如果有一个操作数是浮点数,则计算结果也为浮点数,此时允许除数是0或者0.0结果为正无穷大或负无穷大。
2)求余:如果两个操作数都是整数,则求余运算第二个操作数不为0,如果有一个位浮点数,则允许第二个数为0或者0.0,但结果为非数:NaN0或者0.0对另一位任何数求余都得到0或者0.0。
3)java没有提供更复杂的运算符,如需要完成乘方,开方等运算,可借助java.long.Math类的工具方法完成更复杂的数学运算。
double d=Math.pow(a,5); //a^5
double c=Marh.sqrt(a); //开方