数据类型
- 数据类型的作用:开辟空间的方式
- l数据类型 分为 原始类型(primitive type)引用类型(reference type)
简单数据类型
数值型:整数型(byte,short,int,long) 精确数据(float,double) 实型数据(表示不精确数据)
byte 1个字节 -128-127 boolean 1个字节
short 2个字节 -32768-32767 char 2个字节 0-65535
int 4个字节 float 4个字节
long 8个字节 double 8个字节
字符型(char) 2个字节 范围 0-65535
布尔类型(boolean) 1个字节 只有true和false字面常量
引用类型(类,接口,数组)
接口类型:存放该接口类型实现该接口对象的地址(指针,句柄)
存放与该类相同类型对象的地址(指针,句柄)
Student s1 = new Student();
Strudent s2 ;
s2=s1;
s1的值赋值给s2 其中s1的值就是指向堆中对象的地址(指针,句柄)
其实java只有值传递 (在引用类型时,传递的是对象的地址值)
字符型(表示方式:unicode 八进制 十进制 字符 转义字符)
‘a’ 97 \u0061
‘q’ 133
‘A’ 65 \u0041
‘0’ 48 \u0030
‘\r’ 13 \u000d
‘\n’ 10 \u000a
‘ ‘ 32 \u0020 空格
转义字符
\n代表换行 abc\ndddd 打印为 vvv 换行是换到到下一行与b对应的位置
dddd
\r代表回车 ccc\rdd打印为 dd (退格回到本行的前面)
abc\r\nd 和abc\n\rd 换车换行 移到下一行中第一个位置
转义字符为:对特殊字符(双引号”字符串的结束和开始标示 , 单引号’ 定义字符 在正则表达式中 . ? \ + )进行转义 成正常的字符(它们本身)\” 代表”
其中对普通字符进行转义( n,r,f,b )成特殊含义的字符 \r回车 \n换行 \b退格 \f分页
“c:\\nabcd” 打印为c:\nabcd 其中对最后一个\进行转义为\ 若 为”c:\nabcd”打印为
c:
abcd
“c:\\\\abc” 打印为 c:\\abc 其中\\将转义字符转换成原义字符\ 后面\\ 转义成原义字符\ 则结果为 c:\\abc
注:在正则表达式中还会继续用\进行转义正则表达式中特殊字符
“av\\.abcd”.split(“\\.”); 首先对字符串”av\\.abcd”转义后为av\.abcd
第一、其中对”\\.”转义成\.
第二、则\.在正则表达式表示对 特殊字符 . 进行转义成 . 则结果为”av\”和”abcd”两个字符串 \\.
“av\\.abcd”.split(“\\\\.”); 首先对字符串”av\\.abcd”转义后为av\.abcd
第一、其中对”\\\\.”转义成\\.
第二、则\\.在正则表达式表示对 特殊字符 \ 进行转义成 \ 通过正则表达式进行转义后的字符串为 \. 则结果为”av”和”abcd”两个字符串
其中:char 和 byte short几种类型中进行混合运算时内部会进行必然的转换成int 类型
short s = 1;
s = s+1; 编译出错 s+1转换成了int类型
s++ 编译通过 单目运算不会改变运算类型 而s=s+1双目运算会改变运算类型
s+=1 复合赋值运算不会改变运算类型 依然是short类型
char c = 97 ,int I= 78,long l = 123l; float f = 12.0f double d = 3.;
long lg = c+i+l 自动转换成 运算后自动转换成long 也可以用 float和double接受
float fg = c+i+l+f 自动转换成 float 只能用float或double接受,不可用long类型接受
double db = c+l+d 自动转换成double
在型中进行运算时,总是把类型转换成最高字节的数据类型