变量
定义:在运行期间,随时可能产生一些临时数据,应用程序会将这些数据保存在一些内存单元中,每个内存单元都用一个标识符来表示,这些内存单元被称为变量,定义的标识符就是变量名,存在单元中的数据就是变量的值。
变量的三要素:
1)数据类型
2)变量名:按照标识符的组成规则: 遵循 "小驼峰命名法"
3)初始化值:如果变量使用之前都没有赋值,就"报错了"
变量的格式:
数据类型 变量名 = 初始化值 ;
变量的数据类型 / java中的数据类型(重点):
两大类:
1)基本数据类型(四大类型,8种)
整数类型:默认int类型
byte 字节类型 占用的字节数1个字节 (-128~127:范围)
short 短整类型 占用的字节数 2个字节
int 默认类型 占用的字节数 4个字节
long 长整型 占用字节数 8个
实际开发过程中:多用int,其次是long(定义时间--当前系统毫秒值--后期学习类-- -日期----毫秒值)
浮点类型: 默认就是double类型
float 单精度类型 (占4个字节)
注意:定义float类型时,float a123.4f;为float类型赋值,后面必须跟f/F.
double 双精度类型 (占8个字节)
字符类型
char 占两个字节数
char ch = 'A' ; 为char类型的字符赋值字符A
char ch=97; 为一个char类型的变量赋值97,相当于辅助字符
布尔类型 不参与运算,只是提供判断和其他数据类型转换
boolean (true / false )
boolean flag = true ;
2)引用数据类型:
类(class)
接口(interface)
数组([])
枚举(enum)
注解(annotation)
8种数据类型是java语言内嵌的,在任何操作系统种都具有相同大小的属性,而引用数 据类型是在java程序中由编程人员自己定义的变量类型.
定义变量的注意事项
1)定义long类型必须在值的后面加上标记: L或者l 这样就表示定义的是长整型的变量 2)浮点类型默认double,定义单精度float类型的时候,后面的值需要加上F/f.
1.变量中的测试(定义变量注意事项)
2.java中的基本数据类型---默认类型提升(隐式转化)
3.java中的强转类型。
定义的时候的注意事项:
1)同一个变量,不能被定义多次(重复定义),这种情况是因为Java是一个强类型语言
强类型语言:语法和格式是非常严谨的! (Java语言)
弱类型语言:JavaScript(前端Js)
js定义变量 var a = 10 ;(分号可以不写,var也可以不写)
2)实际开发中,不建议同一行上定义多个变量(不适合阅读)
一行同时定义多个变量(面试题/笔试题中出现居多)
3)方法定义中的变量:局部变量,它在使用之前必须进行初始化否则报错!
1)要么定义的变量的时候就初始化了
数据类型 变量名 = 初始化值;
2)要么就先去定义,然后在使用之前必须初始化
数据类型 变量名; //声明变量
变量名 = 初始化; //然后初始化了
4)语句结束,都是以"分号结束" ; (英文字符)
定义两个变量 :
int a = 4 ;
byte b = 3 ;
两个变量要进行求和----数据在进行计算的时候,应该要保证数据类型一致!
Java中基本数据类型:存在概念
默认类型提升
byte,short,char三者之间不转换,但是分别自己参与运算的时候
优先提升为int(考点)---long---float---double
boolean类型:不参与任何的运算!它只是描述
逻辑判断的结果(true/false)
定义两个变量
int a = 4 ;
byte b = 3 ;
现在的接收的结果类型的变量是byte类型,而且a和b要进行变量相加
当前我们变量相加计算的时候,如果接收的类型 范围小于计算结果的数据类型
需要使用Java的强转类型转换-----让我们的数据进行类型匹配,防止出现(jvm提示不兼容的类型:)
显示转换(强制类型转换)----
不仅适用于基本类型,引用数据类型(后期研究引用类型)
格式:
目标数据类型 变量名 = (目标数据类型)(结果) ;
实际开发中,尽量避免强转类型转换,可能会造成数据精度损失
举例测试:
class DataTypeDemo3{
public static void main(String[] args){
//定义变量变量
int a = 4 ; //int类型
byte b = 3 ;//byte类型
//两个数据求和
int result = a + b ; //变量相加了
//int result = a + b //先将一个字节的b---直接提升int----变成4个字节3
//结果数据类型:是int类型 = 四个字节的7(int类型)
System.out.println("result:"+result) ;//result:7
}
}
class DataTypeDemo{
public static void main(String[] args)
{
//byte类型
byte b = 100 ;
//byte b = 120 ; // 已在方法 main(String[])中定义了变量 b
System.out.println("b:"+b) ;//"b:值" //b:100
//重新赋值
b = 20 ;
System.out.println("b:"+b) ;
System.out.println("------------------------------------") ;
//短整类型 short
short s = 50 ;
s = 90 ;
System.out.println("s的值是:"+s) ;
System.out.println("------------------------------------") ;
//整数默认类型:int
int i = 10000 ;
System.out.println("i的值是:"+i) ;
//i = 10000000000;//DataTypeDemo.java:44: 错误: 过大的整数: 100000000
System.out.println("------------------------------------") ;
long l = 100000000000L; //建议使用L
//当前这个类型装不下了,此时就需要使用长整型定义
System.out.println("l的值是:"+l) ;
//long类型的应用场景:定义时间毫秒值的时候
//举例:jdk提供的 System类:里面有一个方法:获取当前系统时间毫秒值
//public static long currentTimeMillis()
//long time = System.currentTimeMillis() ;
//System.out.println(time) ;
System.out.println("----------------------------------") ;
//浮点类型:默认double
//单精度类型float
//float f = 12.56;//DataTypeDemo.java:64: 错误: 不兼容的类型: 从double转换到float可能会有损失
//加入标记
float f = 12.56F;
System.out.println("f:"+f) ;
//double类型
double d = 13.45 ;
System.out.println("d:"+d) ;
System.out.println("----------------------------------") ;
//字符类型char
char ch = '我' ;
ch = 'A' ;
ch = '0' ;
System.out.println("ch:"+ch) ;//'0'
System.out.println("----------------------------------") ;
//布尔类型 boolean 使用逻辑判断去用的,不参与运算
//一般情况变量 flag(标记)
boolean flag = true ;
flag = false ;
System.out.println("flag:"+flag) ;
}
}
同一行定义了多个变量
byte b, b1 = 3,b2 = 4 ;
1)b = b1 + b2 ; //变量相加
2)b = 3+4 ; //两个常量相加
输出b的值
问:
当前代码中 哪一句会编译失败,为什么,指出它的解决思路!
1)编译失败
为什么?因为byte,short,char三者之间不转换,一旦参与运算
优先提升为int
所以b1--先提升为int类型3
b2---提升为int类型的4
两个相加的结果为int类型的 7,而b的类型 byte,接收不了
所以需要强转类型转换
*/
class DataTypeTest{
public static void main(String[] args){
//同一行定义了多个变量
byte b, b1 = 3,b2 = 4 ;
//1)
//b = b1+ b2;//不兼容的类型: 从int转换到byte可能会有损失
//b = (byte)(b1+b2) ; //解决格式:强转
//System.out.println("b:"+b) ;
//2)
b = 3+4 ; //常量相加,先相加,然后看其的结果是否在byte类型 取值范围内,
//在的话,就直接赋值
//超过范围了 (默认整数int类型---强转解决: ")
System.out.println("b:"+b) ;
}
}