变量:在内存中开辟的存储空间,用来存储数据。(重点)
通过变量名称来操作存储空间。
变量的命名个规则:
1、名称由字母、数字,_和$任意组成,数字不能开头
2、大小写敏感(区分大小写)
3、可以使用汉字,但是不建议使用
4、驼峰命名法(见名知意)
myDogName ="旺财";
5、不能使用关键字(Java保留字)
变量的使用规则:
1、必须先定义(声明,创建)和赋值(初始化)
2、变量可以重复使用,即可以进行多次存取操作
不需要强调类型,但是存储数据时,一定
要与第一次声明时的类型匹配
3、变量的作用域:变量有自己的使用范围,除了范围,变量失效
即,从定义开始,到所在的大括号的结束符号为止
出了作用域,想使用,需要重新定义和初始化
----------------------------------------------------------------------
Java语言数据的类型:共有两大类型:
1:基本数据类型 8种:byte,short,int,long,float,double,char,boolean
2:引用数据类型 无数种:除了8种基本数据类型外,其余的都是引用类型,可以自定义。
基本数据类型:非常常用的几个类型:(原始数据类型)
byte,short,int,long,float,double,char,boolean
再次分类:
整数类型 4种:byte,short,int,long
浮点数类型 2种:float,double
字符类型 一种:char
布尔类型 一种:boolean
1、整数类型:byte,short,int,long
二进制位数 范围 幂 字节
byte(字节类型): 8 位 -128~127 -2^7~2^7-1 1
short(短整数类型): 16位 -32738~32737 -2^15~2^15-1 2
int(整数类型): 32位 正负21亿 -2^31~2^31-1 4
long(长整形): 64位 正负922亿亿 -2^63~2^63-1 8
byte:
bit:位
byte字节 = 8bit
单位:
byte--kb--mb--gb--tb--pb--eb
一秒---128M 1TB需要两个多小时 1PB需要传输83天
8进制(用来计数):0~7
16进制:字符0~9 a~f ,字母不区分大小写。
127 的二进制:0111 1111
2进制0b开头 ,8进制0开头 一个8对应二进制的三位:0177
16进制0x开头,一个16对应二进制的4位。
查看二进制: Integer.toBinaryString(-900) 输入十进制,查看二进制;
int类型加int类型时会出现封闭式运算
int类型的所有数值计算结果一定都是32位的
011111111 111111111 111111111 111111111
+ 00000000 00000000 00000000 00000001
------------------------------------------
10000000 00000000 00000000 00000000 --最小值
封闭式运算:
max+1=min
min-1=max
浮点数类型:(小数类型)
float: 32位
double: 64位
0 11101110 00011110000111100001111--float
float(又叫单精度类型):最高位是符号位,紧接着8位是指数 2^127 有正负之分
后续的23位表示精度
double(又叫双精度类型):最高位是符号位,紧接着11位是指数
后续52位表示精度。
指数位:为某一个小数的整数部分。
float整数部分的最大值 2^127 = 3.403E38
最小值 -3.403E38
double整数部分的最大值 2^(2^10-1) =2^(1023) =1.7E308
最小值: -1.7E308
练习:byte,short,int,long,float ,double
按照范围大小排序:从小到大
byte<short<int<long<float<double
浮点数类型可以表示整数但是并不是很精确,只有个别的精确:
加入我们在二进制中给一个小数点
0000 .1-----0.5
+ 0000.1----0.5
-----------------
0001.0----1
所以二进制只能表示特定的精确值,1/2,1/4,1/8等
需要注意的是,直接输入的类型有默认的类型,整数类型默认int类型,浮点数类型默认是double类型
也叫字面量;如 int a =10;float b =10.0;//10与10.0都为字面量
在给byte,和short类型的变量赋值时,直接写的整数值,只要没超出相应类型的范围,就不会出现编译错误(语法错误)
如果想要输出的是long类型或者是float类型,那么,就需要在字面量后面加上l/L,f/F
如:long a = 10L;或long a =10l;
double b = 10.0f;或double b =10.0F;
字符类型:char(又叫无符号整数类型)
在内存中占2字节大小,16位二进制
赋值特点:
1、值中,有且只有一个字符(空格可以,两个空格不行,代表两个字符)
2、字符必须用单引号引起来
另外特点:底层二进制是无符号的整数类型
即 0~2^16-1---0~65535(汉字只有一部分,不是全部的汉字都包括)
所以赋值时,可以赋值,也可以赋值整数。
但是存入变量空间后 其实是其整数对应的字符。
java语言默认使用的字符集为unicode。
Unicode字符集:
无论字母还是汉字,都占两个字节大小
‘A’--00000000 01000001
‘a’--00000000 01100001
‘0’--00000000 00110000
什么是字符集:
即二进制与字符的一一对应关系的表
GBK ,GBK2312,UTF-8,
‘中’ ---00010110 01010101
‘中’ ---00010110 01010101 00010001
写文件是采用Unicode输入’中‘
00010110 01010101
打开文件时:采用GBK
00010110 01010101--好
编码:将字符变成二进制
写
解码:将二进制解析成字符
读
Java语言常用的字符:
A~Z---65-90
a~z---97-122
0~9---48~57
java语言中的转义字符:
'\':将特殊字符变成相应意义的字符。
java语言的特殊字符:
反斜线,单引号, 双引号, 制表符,换行符,回车符号
'\\' '\'' '\"'(也可以不加\) '\t' '\r' '\n'
换行符有翻页效果,看不到前一页的数
如:System.out.println("Hello \r World");
输出结果为"World",Hello相当于上一页,所以消失不见
查看字符集中某一字符对应的整数
将字符赋值给int类型的变量即可
int num ='李';
int num1 ='健';
char c20 = 65;//也可以直接赋值整数,得到的是字符集中对应的字符
布尔类型:用来判断条件是否成立
在内存中占一字节大小。
只有两个值:true/false
true:表示条件成立
false:表示条件不成立
类型转换:(因为在赋值时,可能两个数的类型不同,所以需要类型转换)
1、自动转换(隐式转换)
占内存小的类型变量赋值给占内存大的类型变量
会发生自动转换
byte b = 5;
short b1 =b;//8位的5赋值给16位的5,在前面自动添加8个0
int c1= -1;
long c2 = c1;//32位的-1赋值给了64位的c2里,自动填了32个1
long c3 =-1;
byte-->short-->int-->long-->double
char(char与short强转)
2、强制转换:
占内存大的类型变量赋值给占内存小的类型变量,需要强制类型转换,
语法如下:(占内存小的变量类型名)变量;
注意:有可能出现精度损失,在编译过程中出现错误
int a = 1;
byte a1 = (byte)a;
long b = -10;
int b1 =(int)b;
double-->float-->long-->int-->short-->byte
char
引用数据类型:无数种,除了现有的,我们还可以自定义类型
String:字符串类型
1、值中,有0个或0个以上字符,(空格可以,两个空格也可以)
2、字符必须用双引号引起来
3.字符串可以做拼接操作,拼接后的数据仍是字符串类型。
String与char的赋值区别:
1、值中,char必须有一个且只有一个字符,String可以没有,也可以有多个
2、char类型用的是单引号,String用的是双引号
3、char类型可以直接赋值给整数,对应字符集中相应的字符, String不可以赋值整数,类型不匹配,String为引用数据类型,int为基本数据类型