Java的变量和运算符
- Java的变量和运算符 推荐度:
- 相关推荐
Java的变量和运算符
变量的概念
变量是计算机内存中的一块存储空间,作用为存储一个数据,是存储数据的基本单元。
变量的组成
变量由数据类型,变量名,值组成。
名词解释:
数据类型:声明内部存放的数据是什么类型的数据。
变量名:作用为区分不同的变量。
值:内存中存放的数据。
变量的创建
1.先声明,后赋值
数据类型 变量名;//声明
变量名=值;//赋值example://先声明
int age;
//再赋值
age=20;
注意:变量只有声明赋值后才能使用,只声明是无法使用的。
2.声明的同时直接赋值
数据类型 变量名=值;example:int age2=21;
3.同时声明多个变量,再逐一赋值
数据类型 变量名1,变量名2,..;//声明多个
变量名1=值1;
变量名2=值2;
..example:int score1,score2,score3;//声明多个score1=90;score2=88;System.out.println(score1);System.out.println(score2);// System.out.println(score3);错误(未赋值)score3=60;System.out.println(score3);
4.同时声明多个变量并直接赋值
数据类型 变量名1=值1,变量名2=值2,..;//同时声明多个并直接赋值int score4=70,score5=68,score6;score6=99;
PS:第三种写法和第四种可以混合使用。
数据类型
由于java是强类型的语言:每个数据都有自己对应的数据类型,每个容器也需声明自己的数据类型。
基本数据类型
1.整数
数据类型 | 字节长度 | 取值范围 | 取值范围(十进制) | 举例 |
byte | 1B | -2^7~2^7-1 | -128~127 | byte b = 10; |
short | 2B | -2^15~2^15-1 | -32768~327767 | short s = 10; |
int | 4B | -2^31~2^31-1 | -2147483648~2147483647 | int i = 10; |
long | 8B | -2^63~2^63-1 | 很大 | long l = 10L; |
整型数据特点:
int 为计算机整数的默认类型
long 类型的值超出int的取值范围时必须在末尾添加L或l(为方便记忆,建议龙类型所有值末尾之间添加L)
byte b=127;
short s=32767;
int i=1000000;
//在int的取值范围内
long l=1000;
//在int的取值范围外
long l2=10000000000L;
2.小数(浮点数)
数据类型 | 字节长度 | 取值范围 | 举例 |
---|---|---|---|
float(单精度浮点数) | 4B | -3.4E38~3.4E38 | filoat 分= 1.25F; |
double(双精度浮点数) | 8B | -1.79E308~1.79E308 | double d = 2.5; |
浮点数特点:
double 为计算机小数的默认类型
float类型在赋值时末尾必须添加F或者f
float f=5.5F;
double d=5.5;
3.字符
数据类型 | 字节长度 | 取值范围 | 字符集 |
---|---|---|---|
char | 2B | 0~65535 | Unicode(16进制)字符集 |
1. 单引号赋值:值内部只能有一个组成部分char 变量名='值';
2. 数值赋值:每个数字都有一个自己对应的字符,数字不能超出取值范围A-Z:65-90a-z: 97-122char 变量名=数字;
3. unicode编码赋值-了解char 变量名='\u0041';//A example:char c1='a';//char c2='ab';char c2='6';//char c3='65';char c3=97;//achar c4=6;System.out.println(c1 == c3);//tSystem.out.println(c2 == c4);//fchar c5='\u0041';System.out.println(c5);//A
char类型的数据特点:
值内部只有一个组成部分,每一个数字都有自己对应的字符,char类型在进行数学运算时会统一换算为数值状态。
4. 布尔
数据类型 | 取值 | 应用场景 |
---|---|---|
boolean | true(真),false(假) | 条件判断 |
boolean类型的使用特点:一般用于条件判断,不能进行数学运算。
引用数据类型
只要不是八大基本类型,就一定是引用类型
引用类型有:String,数组[] ,接口interface,类class。
暂时先介绍String类型,剩下的后期学到后再详细介绍
String :字符串,可以存放多个字符。(String类型的值必须写进双引号,不做其他要求)
String 变量名="值";example:String s1 = "10";
String s2 = "abc";
String s3 = "+-*/";
String s4 = "+-*/10 abshajdas shda-01248901";//基本数据类型加""也会变成String类型String s5 = 2+"";
数据类型转换
基本类型数值范围从从小到大:
byte—> short—>(char)—>int—> long—> float—> double
自动类型转换
发生在小数据类型给大数据类型赋值时(没有数据精度丢失风险)
大类型=小类型;example:byte b=10;
//将byte类型的变量b的值赋值给short类型的sshort s=b;//short=byte
强制类型转换
发生在强制将大类型的值赋值给小类型时(存在数据精度丢失的风险)
语法:小类型 = (小类型)大类型
1. 大类型的值在小类型的取值范围内,不会出现数据异常
short s=10;
byte b=(byte)s;//10
2. 大类型的值不在小类型的取值范围内,会出现数据异常
short s3=129;
byte b3 = (byte) s3;
System.out.println("b3: "+b3);//-127
3. 小数强转为整数时,会直接舍弃小数位,极有可能出现数据丢失
double d=5.9;
int n=(int) d;
System.out.println("n: "+n);//5
4.由于char类型没有负数取值,所有其他类型转为char时都需要进行类型强转
byte byte1=97;
char char1=(char) byte1;
自动类型提升
发生在数学运算时,有不同数据类型参与时,会触发类型提升,最终结果将被提升为大类型
(最多提升为double,最少提升为int)
int num=10;num=num+1;//num=num+0.5;//int+double
表达式
由一个或者多个变量/值通过运算符进行连接,最终可以得到一个结果,这个通过运算符连起来的式子称为表达式。
运算符
数学运算符
+、-、*、/、%(取余/模)
赋值运算符
=、(+=、-=、*=、/=、%=)
特点:括号里的运算符都是先计算,后赋值,如:n+=i 的含义为n先加i,再将相加后的值赋值给n。赋值运算符还可以防止发生自动类型提升。
int d=10;
//d=d+0.5; 会发生自动类型提升
d+=5.5;
System.out.println(d);//15
比较运算符
<(小于),>(大于),>=(大于等于) ,<=(小于等于) , ==(等于) , !=(不等于)
特点:表达式结果一定为boolean类型
逻辑运算符
运算符 | 含义 | 使用 |
---|---|---|
&& | 逻辑与 | 表示并且,多方同时满足才为true,有一方为false则结果为false |
|| | 逻辑或 | 表示或者,一方为true则为true,全为false才为false |
! | 逻辑非 | 表示取反 |
特点:用逻辑运算符衔接的必须为布尔表达式/结果为boolean类型的表达式
拓展:
逻辑运算符特有的短路机制:当运算到可以奠定最终结果的表达式时,后续表达式将不再判断。想要避免这种情况可以使用非短路运算符:&和/(无论如何所有表达式都会正常执行)。
一元运算符
运算符 | 写法 | 含义 |
---|---|---|
++ | 变量名++ 或者 ++变量名 | 数值+1,相当于n+=1 |
-- | 变量名-- 或者 --变量名 | 数值-1,相当于n-=1 |
特点:无论运算符在前还是在后,变量本身的值一定会进行变化。运算符在前,表达式的结果为变量计算后的值;运算符在后,表达式的结果为变量计算前的值。
int n=1;int b=(n++) + (++n) + (--n) + (n--);// 1 3 2 2System.out.println("n: "+n);//1System.out.println("b: "+b);//8
三元运算符
布尔表达式 ? 结果1 : 结果2
执行流程:当布尔表达式结果为true时,执行结果1,否则执行结果2。
结果1和结果2可以为一个值或表达式
//判断变量n是否为偶数并输出int n=11;System.out.println( n%2==0 ? "偶数" : "不是偶数" );int b=( n%2==0 ? n*10 : n+1);System.out.println("b: "+b);
扫描器-Scanner
java类库中提供了Scanner工具类,可以辅助实现接受用户输入的数据。
使用步骤:
创建扫描器—>给用户提示—>接收用户输入
PS:在接收用户输入的内容时,不同数据类型有不同的接收语句。扫描器在创建后可以反复使用。
String: 扫描器名.next()
int: 扫描器名.nextInt()
double: 扫描器名.nextDouble()
char: 扫描器名.next().charAt(0)
//接收用户输入的姓名、年龄、成绩、性别//1. 创建扫描器java.util.Scanner sc=new java.util.Scanner(System.in);//2. 给用户提示System.out.println("请输入你的姓名:");//3. 接收用户输入String name = sc.next();//接收年龄System.out.println("请输入你的年龄:");int age = sc.nextInt();//接收成绩System.out.println("请输入你的成绩:");double score = sc.nextDouble();//接收性别System.out.println("请输入你的性别:");char sex = sc.next().charAt(0);//输出查看结果System.out.println(name+" "+age+" "+score+" "+sex);
导包-import
一次性在源文件中知名某个明星或某些类的来源。
语法:import 包名.类名;
使用规范:
1. 位置:第一个类的上方,package语句的上方。
2. 一次性导入某个类或某些类之后,源文件中的类在使用时不需再声明包。
3. 可以使用通配符*一次性引入某个包里的所有类。
import 包名.*;
4. *通配符只能引入直属的类,无法引入子保的类。
5. 一个导包语句中通配符*只能存在一次。
6. 一个源文件导包语句可以存在多个。
转义字符(\)
作用:将特殊字符普通化,将普通字符特殊化。
使用:\n表示换行;\t表示一段制表符距离,相当于tab键的效果。(这两个符号在注释“”中才会生效)
//需求:输出一个"System.out.println(" \" ");//演示\n和\tSystem.out.println("太阳当空照,花儿对我笑,\n小鸟说\t早早早,你为什么背上小书包");
重点掌握:
-
变量的语法
-
八大基本数据类型的字节数+取值范围(boolean类型掌握字面值)
-
自动类型转换和强制类型转换各自的发生时机
-
强转的语法和不同情况的效果
-
什么是自动类型提升
-
各个运算符
-
逻辑运算符(短路机制)
-
一元运算符
-
三元运算符
-
-
扫描器的使用
-
导包的使用特点