变量
<1>变量必须先声明才能使用,如要要输出必须先赋值。
<2>变量在作用域内有效。
<3>作用域内,不能有重名变量。
1、基本数据类型
1)整型:
byte:一个字节,8bit,范围:-128–127
short:2字节
int:4字节,一般整型都采用int
long:8字节,声明long类型变量需要以“l”或“L”结尾
2)浮点型:
float:单精度,4字节,表示范围比long要大,声明float类型变量需要以“f”或“F”结尾
double:双精度,8字节,一般浮点型默认采用double,
3)字符型:
char:2字节,定义char变量用一对‘ ’,内部只能有一个字符,可以是空格,但不能为空。也可以是换行符char c = '\t'
、制表符char c = '\n'
或Unicode值(例如char c = '\u0043'
)
4)布尔型:
boolean:只有两个值true、false
2、引用数据类型
1)类class
⭐字符串String
属于引用数据类型,声明String类型变量时用一对 " " 。
String可以和8种基本数据类型做连接运算:+,运算结果仍然是String。
练习一:
class StringTest
{
public static void main(String[] args)
{
char c = 'a';//a:97,A:65
int num = 10;
String str = "hello";
System.out.println(c + num + str);//107hello
System.out.println(c + str + num);//ahello10
System.out.println(c + (num + str));//a10hello
System.out.println((c + num) + str);//107hello
System.out.println(str + num + c);//hello10a
}
}
练习二:输出* *
//
System.out.println("* *");//成功
System.out.println('*' + '\t' + '*');//93 :char 和char之间做ascll码的加法得到int,与char做加法
System.out.println('*' + "\t" + '*');//成功
System.out.println('*' + '\t' + "*");//51* :char 和char之间做ascll码的加法得到int,与String做连接
System.out.println('*' + ('\t' + "*"));//成功
int 和 String之间不能通过强制转换,例如String str1 = 123;
、int num = (int)str1;
都是错误的。
String转换成int的方式:int num1 = Integer.parseInt()str1
;
2)接口interface
3)数组array
♥基本数据类型转换
不包含boolean型
1)自动类型提升
当容量小的数据类型变量与容量大的数据类型变量做运算时,结果自动提升为大容量的数据类型。
byte、char、short做运算,结果是int
2)强制类型转换
强转符号()。
采用截断式转换,可能导致精度损失。
double d1 = 12.9;
int i1 = (int)d1;
变量运算的两个特殊情况
1.情况一
赋值时long类型不加l或L:右边的值会被认为是int。当值不超过int表示范围可以正常编译,当超过了int范围就编译失败了。
long l1 = 123123
System.out.println(l1);
//报错
long l2 = 12321243423514213213;
float类型不加f或F:右边的值会被认为是double类型,大容量数据类型double无法赋值给小容量的float。
//报错
float f1 = 12.3;
2.情况二
整型常量默认为int;
浮点型默认为float。
左边容量小于右边就会报错
byte b1 = 12;
//报错
byte b2 = b1 + 1
//报错
float f1 = b1 + 12.3
进制
不同进制:
二进制:0,1。以0b或0B开头
十进制:0-9
八进制:0-7。以0开头
十六进制:0-9 A-F。A-F不分大小写。以0x或0X开头
二进制:
以补码形式存储数字。
0正1负。
负数的补码:原码除符号位取反 +1
十进制与二进制转换:
十进制 除以2取余,直到商0停止,结果取逆