1.基本数据类型:
byte:占一个字节,-128-127
short:占两个字节,-32768-32767
int:占四个字节,
long:长整型,占八个字节,使用时加上"L"(不要使用小写的"l",容易混淆): long x = 3L;
float:单精度,占四个字节, float x = 2.3f;
double:双精度,占八个字节,
boolean:布尔型,占一个字节,只能是true或false
char:占两个字节,0-65535
a.对于字符'\u0061':使用的是Unicode码表定义的字符,其中"0061"是十六进制的数据
b.特殊含义的字符:
\r: 回车
\n: 换行
键盘上按下回车键: \r\n
\t: 制表符,代表tab
\b: 退格键,类似backspace
System.out.println('\'');
System.out.println("\"");
System.out.println("\\");
c.
System.out.print(' ');//正确
System.out.print('');//错误
System.out.print(' ');//错误
2.浮点数的八进制与十六进制表示的特殊之处:
a.对于浮点数没有八进制表示,所以在下面代码中,等价于十进制表示:
float e1 = 03.3f;
System.out.println(e1);
float e2 = 3.3f;
System.out.println(e2);
b.对于浮点数的十六进制表示形式,只有指数表示形式,而且使用符号是"p"或"P"(十进制的指数表示符号是e或E)
//double f1= 0x1.0; //编译报错
double f2=0x1.0p3;
System.out.println(f2);
3.不同进制之间的转换方法:
a.十进制->二进制/八进制/十六进制
方法:将十进制数,除以目标进制的进制数,并取得余数
//改进版:编程实现十进制转成十六进制
int x = 198;
StringBuilder sb = new StringBuilder();
int temp = 0;
while(x > 0){
temp = x % 16;
switch(temp){
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
sb.append("temp-10+'A'");
break;
default:
sb.append(temp);
}
x = x / 16;
}
System.out.println(sb.reverse());
//最简版:使用if实现
int x = 198;
StringBuilder sb = new StringBuilder();
int temp = 0;
while(x > 0){
temp = x % 16;
if(temp < 10)
{
sb.append(temp);
}else {
sb.append((char)(temp-10+'A'));
}
x = x / 16;
}
System.out.println(sb.reverse());
b.二进制/八进制/十六进制->十进制
方法:对源进制数按位进行编号(从0开始),将每位上的数字乘以源进制数的编号次方,进行相加
例:
八进制306->十进制?
=3*8^2+6*8^0
=198
结果:十进制198
c.二进制->八进制/十六进制的快速转换
方法:1.二进制转换八进制:每三位一看(因为三位二进制正好表示0-7,即八进制)
2.二进制转换十六进制:每四位一看
例:
二进制11000110
011-000-110(从低位开始,高位处不够补0)
3 0 6
结果:八进制306
4.码表
a.ASCII表: 英文码表,每个字符占一个字节
b.GB2312,GBK,GB18030码表: 包含中文,一个英文字符占一个字节,一个中文字符占两个字节(第一个字节一定是负数)
c.Unicode码表:国际码表,一个字符占两个字节(无论是英文还是中文);java中就是使用的是这个码表
d.UTF-8码表:国际码表,一个英文字符占一个字节,一个中文字符占三个字节
5.类型转换
a.自动提升:
表达式的数据类型自动提升
所有的byte型、short型和char的值将被提升到int型。
如果一个操作数是long型,计算结果就是long型;
如果一个操作数是float型,计算结果就是float型;
如果一个操作数是double型,计算结果就是double型
注意:
运算中,使用常量整形数值如10时,默认是int型;使用小数格式的数据如3.5,默认是double!
b.强制类型转换
可以直接将小类型赋值给大类型,而当将大类型数据赋值给小类型时,就需要强制类型转换,转换时就将大类型数据的低位字节值给目的类型
注意:
char,byte,short之间的转换:
char <---> byte
char <---> short
(由于char类型的范围为0-65535,转换时必须使用类型转换运算符)
参考代码:
byte a=10;
char b=(char)a;
System.out.println(b);
System.out.println(-b);
byte c=-10;
char d=(char)c;
System.out.println(d);
System.out.println(-d);
c.变量的作用域与生命周期:
作用域:在定义的大括号中
生命周期:从定义开始,直到作用域结束
例:
public static void main(String [] args)
{
{
int a = 2;
System.out.print(a);
}
int a = 4; //这样书写是可以的,因为第一个a的生命周期已经结束!
System.out.print(a);
}
注意:
变量定义过可以先不初始化,但是在你使用前必须进行初始化!
6.其他:
包装类的缓存值:(对于重复使用,系统会在缓存中创建重复使用的包装类对象,再次使用时直接使用缓存中的对象)
boolean: true或false
byte: -128-127
short: -128-127
int: -128-127
long: -128-127
char: 0-127
(对于float和double没有)
例:
//程序输出:i==j
Integer i = 3;
Integer j = Integer.valueOf(3);
if(i==j)
System.out.println("i==j");
else
System.out.println("i!=j");
byte:占一个字节,-128-127
short:占两个字节,-32768-32767
int:占四个字节,
long:长整型,占八个字节,使用时加上"L"(不要使用小写的"l",容易混淆): long x = 3L;
float:单精度,占四个字节, float x = 2.3f;
double:双精度,占八个字节,
boolean:布尔型,占一个字节,只能是true或false
char:占两个字节,0-65535
a.对于字符'\u0061':使用的是Unicode码表定义的字符,其中"0061"是十六进制的数据
b.特殊含义的字符:
\r: 回车
\n: 换行
键盘上按下回车键: \r\n
\t: 制表符,代表tab
\b: 退格键,类似backspace
System.out.println('\'');
System.out.println("\"");
System.out.println("\\");
c.
System.out.print(' ');//正确
System.out.print('');//错误
System.out.print(' ');//错误
2.浮点数的八进制与十六进制表示的特殊之处:
a.对于浮点数没有八进制表示,所以在下面代码中,等价于十进制表示:
float e1 = 03.3f;
System.out.println(e1);
float e2 = 3.3f;
System.out.println(e2);
b.对于浮点数的十六进制表示形式,只有指数表示形式,而且使用符号是"p"或"P"(十进制的指数表示符号是e或E)
//double f1= 0x1.0; //编译报错
double f2=0x1.0p3;
System.out.println(f2);
3.不同进制之间的转换方法:
a.十进制->二进制/八进制/十六进制
方法:将十进制数,除以目标进制的进制数,并取得余数
//改进版:编程实现十进制转成十六进制
int x = 198;
StringBuilder sb = new StringBuilder();
int temp = 0;
while(x > 0){
temp = x % 16;
switch(temp){
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
sb.append("temp-10+'A'");
break;
default:
sb.append(temp);
}
x = x / 16;
}
System.out.println(sb.reverse());
//最简版:使用if实现
int x = 198;
StringBuilder sb = new StringBuilder();
int temp = 0;
while(x > 0){
temp = x % 16;
if(temp < 10)
{
sb.append(temp);
}else {
sb.append((char)(temp-10+'A'));
}
x = x / 16;
}
System.out.println(sb.reverse());
b.二进制/八进制/十六进制->十进制
方法:对源进制数按位进行编号(从0开始),将每位上的数字乘以源进制数的编号次方,进行相加
例:
八进制306->十进制?
=3*8^2+6*8^0
=198
结果:十进制198
c.二进制->八进制/十六进制的快速转换
方法:1.二进制转换八进制:每三位一看(因为三位二进制正好表示0-7,即八进制)
2.二进制转换十六进制:每四位一看
例:
二进制11000110
011-000-110(从低位开始,高位处不够补0)
3 0 6
结果:八进制306
4.码表
a.ASCII表: 英文码表,每个字符占一个字节
b.GB2312,GBK,GB18030码表: 包含中文,一个英文字符占一个字节,一个中文字符占两个字节(第一个字节一定是负数)
c.Unicode码表:国际码表,一个字符占两个字节(无论是英文还是中文);java中就是使用的是这个码表
d.UTF-8码表:国际码表,一个英文字符占一个字节,一个中文字符占三个字节
5.类型转换
a.自动提升:
表达式的数据类型自动提升
所有的byte型、short型和char的值将被提升到int型。
如果一个操作数是long型,计算结果就是long型;
如果一个操作数是float型,计算结果就是float型;
如果一个操作数是double型,计算结果就是double型
注意:
运算中,使用常量整形数值如10时,默认是int型;使用小数格式的数据如3.5,默认是double!
b.强制类型转换
可以直接将小类型赋值给大类型,而当将大类型数据赋值给小类型时,就需要强制类型转换,转换时就将大类型数据的低位字节值给目的类型
注意:
char,byte,short之间的转换:
char <---> byte
char <---> short
(由于char类型的范围为0-65535,转换时必须使用类型转换运算符)
参考代码:
byte a=10;
char b=(char)a;
System.out.println(b);
System.out.println(-b);
byte c=-10;
char d=(char)c;
System.out.println(d);
System.out.println(-d);
c.变量的作用域与生命周期:
作用域:在定义的大括号中
生命周期:从定义开始,直到作用域结束
例:
public static void main(String [] args)
{
{
int a = 2;
System.out.print(a);
}
int a = 4; //这样书写是可以的,因为第一个a的生命周期已经结束!
System.out.print(a);
}
注意:
变量定义过可以先不初始化,但是在你使用前必须进行初始化!
6.其他:
包装类的缓存值:(对于重复使用,系统会在缓存中创建重复使用的包装类对象,再次使用时直接使用缓存中的对象)
boolean: true或false
byte: -128-127
short: -128-127
int: -128-127
long: -128-127
char: 0-127
(对于float和double没有)
例:
//程序输出:i==j
Integer i = 3;
Integer j = Integer.valueOf(3);
if(i==j)
System.out.println("i==j");
else
System.out.println("i!=j");