(一)常量
概念:常量,在程序运行过程中,其值不可以发生改变的量(数值)。
java中的常量分类
类型 | 特点 | 例 |
字符串 | 必须用“”双引号包裹 | "Hi" 、 "Hello"、"北京"等 |
整数 | -10、20等 | |
小数 | -10.5、20.5等 | |
字符 | 必须用 ' ' 单引号包裹 | 'A'、'B','中'等 |
布尔 | 由 true和false表示“真”或“假” | true、false |
例:打印输出各种类型的常量
public class Demo {
public static void main(String[] args) {
System.out.println("要想健康又长寿"); // 输出字符串 System.out.println(20); // 输出一个整数 System.out.println(12.5); // 输出一个小数
System.out.println('A'); // 输出一个字符
System.out.println(true); // 输出boolean值true
}
}
一、变量(重点)
概念:计算机中一块内存空间,是数据的基本存储单元,通俗的讲变量就是用于存储数据的容器。
(一)变量的组成
1. 变量名:用于获取变量中存储的数据
2. 数据类型:用于约束变量所存储的数据种类与数值范围
3. 变量的值:变量中存储的数据
(二)变量的使用步骤
1.声明定义
语法:数据类型 变量名;
例:
int a;
2.为变量赋值(将数据存储到变量中)
语法:变量名 = 值;
例:
int a;//声明定义一个int类型的变量a
a = 10;//将10保存到变量a中,为变量赋值
3.定义变量同时为变量赋值
语法:数据类型 变量名 = 值 ;
例:
int a = 10;
4.同时定义多个相同类型的变量
语法:数据类型 变量名1, 变量名2, 变量名3....;
例:
int a,b,c;//同时定义三个int类型的变量
5.同时定义多个变量并赋值
例:
int a = 200, b = 400, c = 100;
注意:
1. Java是强类型的语言,务必保证变量类型与值(数据)的类型一致。 例如:int 是整型变量,只能存储 整型数据
2. 在一个主函数中变量名不能相同*
二 数据类型(重点)
(一)类别
(二) 基本数据类型
特点:存储一个数据
数据类型 | 关键字 | 所占空间 | 数值范围 | 字面值 |
整数 | byte | 1B | -128~127 | 整数 |
整数 | short | 2B | -32768~32767 | 整数 |
整数 | int(重点) | 4B | -2147483648~2147483647 | 整数 |
整数 | long | 8B | -9223372036854775808~9223372036854775807 | 整数L/l |
浮点 | float | 4B | -3.4e38~-1.4e-45 / 1.4e-45~3.4e38 | 小数F/f |
浮点 | double(重点 | 8B | -1.7e308~-4.9e-324 / 4.9e-324~1.7e308 | 小数/D |
布尔 | boolean | *4B | true|false 表示真或假 | |
字符 | char | 28 | 字符 :'A' 任何可以打出的字符 整数:0~65535 Unicode编码:'\u0000'~'\uFFFF' | '字符' 整数unicode编码 |
1)字面值:变量中可以存储的数据样式(类型)
2)数值范围所示为十进制数值范围
3)e/E表示科学计数法,e后面的整数表示乘10几 次幂,例如3.5*10*10*10 , 转换为科学计数法表示:3.5e3
(三)引用数据类型
特点:存储一个引用(内存地址),通过引用指向的地址获取数据。
字符串类型
关键字:String
作用:存储多个字符例:
String str="helloWorld";
System.out.println( str );
三、类型转换
(一)自动类型转换
概念:JVM自动将某种数据类型转换为另一种类型
作用:更换数据类型,扩大变量的数据存储范围
转换时机:赋值时
转换条件:
1.两种类型相互兼容
byte-short-int-long-float-double-char 相互兼容
例:byte转换为int
//源类型 byte b = 10; //目标类型 int a = b;
2.目标类型大于源类型
类型大小关系:byte<short/char<int<long<float<double 从小到大(按数据存储量进行排行)
例:long转换为float
long l1 = 100000L; //目标类型 源类型
float f1 = l1;//两种类型相互兼容 切 目标类型大于源类型
注意:以上两个条件必须同时满足才能自动类型转换
(二)强制类型转换
概念:手动强制JVM将变量的类型转换为另一种类型,强制类型转换的结果,不一定是正确的。
作用:不满足自动类型转换条件,需要更换数据类型时
转换时机:赋值时
语法:目标类型 变量名 = (目标类型) 源类型;
转换时机:
1.两种类型相互兼容
2.目标类型小于源类型
例:
int a = 10; //目标类型<源类型,强制类型转换
byte b = (byte)a;//强制将int类型的数据转换为byte
short s = (short)a;//强制将int类型的数据转换为short
转换结果:
1.整数长度合适,数据转换完整
例:
int a = 20;
byte b = (byte)a;
System.out.println( b );//结果:20
2.整数长度不合适,数据截取
例:
int a = 12345;
byte b = (byte)a;//byte只能存储一个字节的数据,其余三个字节全部截断
System.out.println( b );//结果:57
3.小数转换为整数,数据截取,只保留整数部分
例:
float f = 2.5F;
long l = (long)f;//截断小数位,只保留整数
System.out.println( l );//结果:2
4.整数转换为字符,长度合适,数据完整
例:
int a = 65;
.char c = (char)a;//将65转换为对应的字符
System.out.println( c );//结果:'A'
类型转换注意事项:
1. boolean 类型与其他类型均不兼容,所以不能用任何一种方式进行转换
2. 转换时两种变量数据类型必须兼容
3. 强制类型转换编译器不再干预,但依然有可能出现损失精度(数据不完整)的问题
四、表达式
概念:使用运算符链接的 变量 或 值,最终可以得到 一个结果
例:
int a = 10;
int b = 5; //表达式
a + b 结果:15
自动类型提升
作用 :表达式中参与运算的变量类型不一致,运算结果类型为参与运算的最大类型。
例:
int a = 10;
double b = 20.5;
System.out.print( a+b );//结果为30.5 类型为:double
byte b = 10;
long l = 100L;
double d = 10.25;
System.out.println( b+l+d );//结果: 120.25 类型为 double
double d = 10.25;
String str = "Hello";
System.out.println( d+str );//结果:10.25Hello 类型为String
自动提升规则
1. byte/short/char<int<long<float<double<String 由小到大
2. 任何类型遇到String都会提升为String类型
3. 与String类型的变量使用 + 号,结果为字符串拼接,将变量中的数据与字符串直接拼接在一起。
五、运算符(重点)
(一)算数运算符
已知有以下变量
.int a = 10 , b = 2;
String str = "Hello";
运算符参照表
运算符 | 作用 | 例 | 结果 |
+ | 加法运算/字符串拼接 | a + b 、a + str | 12、10Hello |
- | 减法运算 | a - b | 8 |
* | 乘法运算 | a * b | 20 |
/ | 除法运算 | a / b | 5 |
% | 模运算 (获取余数) | a % b | 0 |
(二)赋值运算符
特点:运算后,会改变一个变量的值
已知有以下变量
int a = 10 , b = 2;
运算符参照表
运算符 | 作用 | 例 | 执行结果 | 表达式结果 |
= | 左侧变量或数据为右侧变量赋值 | a=20 | a的值为20 | 20 |
+= | 用变量本身的值与另一个变量相加再赋值 | a += b 等同于 a = a+b | a的值为12 | 12 |
-= | 用变量本身的值与另一个变量相减再赋值 | a -= b 等同于 a = a-b | a的值为8 | 8 |
*= | 用变量本身的值与另一个变量相乘再赋值 | a *= b 等同于 a = a*b | a的值为20 | 20 |
/= | 用变量本身的值与另一个变量相除再赋值 | a/=b等同于a=a/b | a的值为5 | 5 |
++变量 | 用变量本身的值+1再赋值 | ++a 等同于 a = a+1 | a的值为11 | 11 |
--变量 | 用变量本身的值-1再赋值 | --a 等同于 a = a-1 | a的值为9 | 9 |
变量++ | 用变量本身的值+1再赋值 | a++ 等效于 a = a+1 | a的值为11 | 10 |
变量-- | 用变量本身的值-1再赋值 | a-1 | a的值为9 | 10 |
注意:任何表达式本身都有相应的结果产生,赋值运算还会影响变量本身的值
int a = 10;
int b = 20;
System.out.println( a+=b );//输出表达式的结果 30 System.out.println( a );//输出变量的值 30
++、--在后问题:
int a = 5;
int b = 5;
//System.out.println( b=b+1); System.out.println( ++b );//作用同上,输出表达式的结果 6 System.out.pirntln( b );//输出变量的值 6
//通常情况下表达式的值与变量的最终值一致
//++、--在后,用变量本身的值,作为表达式的结果
System.out.println( a++ );//5 , 变量本身的值会作为表达式的结果,再为变量赋值 System.out.println( a ); //6
(三)关系运算符
作用:判断两个变量之间的关系,结果为boolean类型,表示真或假,成立或不成立
已知有以下变量
int a = 5; int b = 5;
运算符参照表
运算符 | 作用 | 例 | 结果 |
> | 大于 | a > b | false |
< | 小于 | a < b | true |
== | 等于 | a == b | false |
>= | 大于或等于 | a >= b | false |
<= | 小于或等于 | a <= b | true |
!= | 不等于 | a != b | true |
(四)逻辑运算符
作用:用于多条件联合判断,结果均为boolean类型(布尔表达式)
已知有以下变量
int a = 10 , b = 20 , c = 2;
运算符参照表
运算符 | 作用 | 例 | |
(表达式)||(表达式) | 逻辑或,表示或者 两个表达式有一个true,结果为true | a<b || a>c 、a>b || b<c | true 、false |
(表达式)&&(表达式) | 逻辑与,表示并且 两个表达式必须同时为true,结果为true | a<b || b>c 、a<b || b==c | true 、 false |
!(表达式) | 逻辑非,取布尔表达式结果相反的值 | !(a>b) | true |
(五)三元/三目运算符
作用:可以根据 一个布尔表达式的真假,获取不同的结果
语法 :
布尔表达式 ? 结果1 : 结果2;
布尔表达式为 true ,获取结果1
布尔表达式为 false,获取结果2
结果1或结果2,可以使用数据、变量、表达式
例:
int a = 10;
int b = 20;
int r = 200;
System.out.println( a>b? 100: 110 ); //结果:110
System.out.println( a<b? 100: 110 ); //结果:100
System.out.println( a<b? r: 110 ); //结果:200