一、变量
1.什么是变量?
变量就是存数的,指代在内存中开辟的存储空间,用于存放运算过程中需要用到的数据。
2. 变量的声明
包含两点:数据类型和变量名(不同的数据有不同的类型)
int a;(表示声明了一个整型的变量,名为a)
int b,c,d;(表示声明了三个整型的变量,名为b,c,d)
3.变量的初始化(使用)
可以在变量声明时初始化,也可以先声明后初始化
int a = 5;(声明的时候同时赋值)
int b;(先声明)
b = 5;(再赋值)
int g = 5,h = 10;(声明两个整型变量g和h,并分别赋值为5和10)
注意事项:声明过一次不能再次声明
4.变量的访问
对变量的访问就是对其所存数据的访问
int a = 5;
int b = a + 10;(先进行计算运算,也就是a+10,5+10,取出a中的5,加10后,再赋值给变量j,最后在进行赋值)
System.out.println(a);输出变量j的值a
System.out.println("a");输出a,双引号中的原样输出
变量变成灰色代表是没有被使用
i = 10;(意味着给变量重新赋值,输出i=10)
i = i + 10;(取出i的值10,修改i的值为i+10的结果,输出i=20,再i本身的基础之上增加10)
变量访问之前必须初始化
5.变量的命名
变量的命名必须符合java标识符的规则:
1.只能由字母、数字、"-"和"$"符组成,并且不能以数字开头,
2.严格区分大小写
3.不能以关键字命名
int 年龄;允许使用中文命名,但不建议
int nianling;杜绝拼音
int age;建议使用英文
int score,myScore,myJavaScore;小驼峰命名法
二、八种基本数据类型
1.整数类型:
byte(最大值一百多),short(最大值三万多),int(正负二十一个多亿),long(特别大的一个数九百万万亿还多)
变量到底占用多大的内容是,是由它的数据类型来决定的
int类型
int a = 5;(a会占用四个字节)
int b = 10000000;(b会占用四个字节)
int:整型,占4个字节,范围-2^31到2^31-1
1G=1024M(兆)
1M=1024KB(千字节)
1KM=1024B(字节)
整数直接量默认为int类型,但不能超出范围,若超出范围则发生编译错误。
两个整数相除,结果还是整数,小数位无条件舍弃(不会四舍五入)
可以在除数或者被除数后面加个.0即可
运算时若超出范围,则发生溢出,溢出不是错误,但是需要避免
long类型
长整型,占8个字节,范围-2^63到2^63-1(长整型后面要加L,最好要大写)
若运算中有可能出现溢出,建议将第一个数后面加L
long a = 25L(25L为长整型直接量)
long b = 10000000000;编译错误,100亿默认int类型,但超出了int范围
long c = 100000000000L;100亿长整型直接量
long d = 3.14L; 编译错误,只能为整数。
类型大的和类型小的计算,自动转换为大的类型。
2.浮点类型
单精度浮点类型float(小数点后七位),双精度浮点类型double(小数点后15位)
区别:精度值
double类型:双精度浮点数,占用八个字节
小数直接默认量认为是double型,若想表示float类型,在后面加f
double不能表示精确数据,运算时有可能发生舍入误差,精确场合不能使用。(BigDecimal类型可以精确)
double a = 3.14;(3.14为小数直接量,默认为double型)
float b = 3.14f;(3.14f为float类型的小数)
double c=3.0,d=2.9;
System.out.println(c-d)9;(输出的结果为0.10000000000000009)
3.boolean类型:
布尔型,占用一个字节,输出true(真)和false(假)
boolean a = true;//ture为布尔型直接量
boolean b =false;//false为布尔类型直接量
boolean c = 250;//编译错误,布尔类型变量中只能存储tuse和false
4.char类型
字符类型 占用2个字节
Unicode:通用码、统一码、万国码,是世界级通用的定长字符集
因为符号太多了,所以Unicode又划分了很多个子集
Java中的char采用的是其中最最最通用的那个子集(65536个符号)
采用Unicode编码格式,一个字符对应一个码,记住ascll码:
'a'的码是97,'A'的码是65,'0'的码数48
char c1 = 65;
System.out.println(c1);输出的是A
println()会依据变量的类型来做输出展示,c1位char类型,所以会以字符的形式输出
char c2 = '\''; 特殊符号需要用\转义
字符型直接量需放在单引号中,只能有一个(必须是一个)
三、
类型转换:
自动类型转换:从小类型转到大类型
类型大小:byte<short<(char)int<long<float<double
int a = 5;
long b = a;
强制转换类型:从大类型到小类型
long b = a;
int c = (int)b;
double转为int舍去小数点后面的数,强转可能会丢失精度
小数类型转整数类型舍去小数点后面的数,强转可能会丢失精度
两点规则:
整数直接量(变量不可以)可以直接赋值给byte、short、char,但不能超出范围内
byte、short、char型数据参与运算时,先一律自动转换为int在运算。
byte b1 = 5;
byte b2 = 6;
byte b3 = (byte)(b1+b2);先进行运算b1+b2,然后在进行强制转换
System.out.println(2+2);输出4
System.out.println('2'+'2');字符型做加法,先转为ascll码