Java学习第二节:变量与运算符
文章目录
前言
对于刚开始学习 Java 的同学来说,第一步不是马上写复杂的程序,而是先搞清楚 Java 中最基础的概念,例如:什么是常量,什么是变量,变量有哪些数据类型,不同类型之间如何转换,以及常见运算符应该怎么使用。这些内容看起来比较基础,但它们是后面学习分支语句、循环、数组和面向对象的前提。只有把这些基础规则掌握清楚,后面写代码时才不容易出现看不懂报错、不会改错误的问题。
`
一、常量与变量
1.1常量
在代码的运行过程中,值不会随着不同的情况发生改变的数据叫做常量,比如数字 10、字符串 “hello”、布尔值 true,以下是常量的分类
整数常量:所有整数
小数常量:所有带小数点的数 2.5 2.0
字符常量:'‘表示, 单引号中必须有且只能有一个内容,可以是一个数字,一个空格等等
注意’12’(不是字符,因为12是两个内容)
字符串常量:""表示 双引号中是字符串内容
布尔常量:true(真) false(假)
空常量:null 代表的是数据不存在,不能直接使用,null是作为引用数据类型初始化值使用
public static void main(String[] args) {
System.out.println(1);
System.out.println(1+2);//输出3
System.out.println(2*3);//输出6
//整数常量
System.out.println(1.0);
//小数常量
System.out.println('a');
System.out.println('6');
System.out.println(' ');//一个空格也是一个字符
//字符常量
System.out.println("莱昂纳多Leonard666");
//字符串常量
System.out.println(true);
//布尔常量
//System.out.println(null);
//null->代表的是数据不存在,不能直接使用
}
1.2变量
在代码的运行过程中,值会随着不同的情况随时发生改变的数据,叫做变量
变量可以理解成一个“装数据的盒子”。这个盒子有名字,也有类型,程序运行过程中可以往里面存不同的值。
基本数据类型一共只有四类八种,需要熟记,以下为分类和示例:
引用类型:类 数组 接口 枚举 注解 Record类
需要注意的是,我们常用的字符串类型String是属于类的一种
public static void main(String[] args) {
//byte
byte num1 = 10;
System.out.println(num1);
// short
short num2 = 20;
System.out.println(num2);
//int
int num3 = 10;
num3 = 200;
System.out.println(num3);
//long 给long赋值的话,值建议后面加L
long num4 = 10L;
System.out.println(num4);
//float 给float赋值,值建议后面加F
float num5 = 10.5F;
System.out.println(num5);
//double
double num6 = 10.5;
System.out.println(num6);
//char
char num7 = 'a';
System.out.println(num7);
//boolean
boolean num8 = true;
//定义一个字符串类型的变量
String s = "i love yu";
System.out.println(s);
var i = 10.5;
//var 可以根据右边的赋值自动推断变量类型,但初学阶段不建议大量使用,因为它会让变量类型不够直观,降低代码可读性。
}
整型计算中需要注意计算结果向下取整!不是四舍五入
public static void main(String[] args) {
int a = 10;
int b = 3;
System.out.println(a + b);// 13
int sub = a - b;
System.out.println(sub);// 7
int mul = a * b;
System.out.println(mul);// 30
/*
除号前后如果都是整数,结果只取整数部分 ,小数点直接舍去
除号前后一旦有一个是小数,结果就是正常小数
*/
int div = a / b;
System.out.println(div);// 3
}
public static void main(String[] args) {
/*
\在java中代表的是转义字符
1.可以将具有特殊含义的字符转成普通字符
2.将普通字符转义成具有特殊含义的字符
*/
/*
n:普通字符
\n:换行
*/
System.out.println("hello\nworld");
/*
\:转义字符
我们需要将具有特殊含义的\变成普通的\字符
*/
String path = "F:\\jdk\\bin";
System.out.println(path);
}
Java 变量使用最需要注意的五个点:
| 序号 | 重要规则 | 简单理解 |
|---|---|---|
| 1 | 变量必须先定义,再使用 | 没有声明变量,不能直接用 |
| 2 | 变量必须初始化后才能使用 | 第一次赋值后,变量才有值 |
| 3 | 同一个作用域中变量名不能重复 | 一个 {} 里不能定义两个同名变量 |
| 4 | 变量有作用域限制 | 小作用域可以访问大作用域,大作用域不能访问小作用域 |
| 5 | 变量类型要和数据匹配 | int 存整数,double 存小数,char 存单个字符 |
二、标识符
简单的说,标识符就是给类,变量,方法取的名字
当然跟人取名字一样,类,变量,方法取名字也有规则要求,就像你的同学不可能叫–小猪佩奇·2333·Peter
标识符的命名规则如下:
硬性规定:
a.标识符不能是关键字如class,int
b.标识符中可以包含字母,数字,_等,但是不能以数字开头
软性建议:
a.给类命名,遵循大驼峰式命名规范即:每个单词首字母大写Program1
b.给方法,变量,参数命名遵循小驼峰式命名规范即:第一个单词小写 + 后面每个单词首字母大写,userAge,getName,setAge
三、数据类型转换
当等号左右两边的数据类型不一致,或者不同类型的数据参与运算时,就可能发生数据类型转换。想到了哆啦A梦的变小隧道…
int a = 10;
double b = a;
3.1数据类型转换分类
| 类型 | 含义 | 是否需要手动写 |
|---|---|---|
| 自动类型转换 | 小范围类型转成大范围类型 | 不需要 |
| 强制类型转换 | 大范围类型转成小范围类型 | 需要 |
3.2自动类型转换
情况一:小类型赋值给大类型
情况二:大类型和小类型一起运算
小弟自动被大哥强化了说是(bushi
public static void main(String[] args) {
long num1 = 23;
System.out.println(num1);
//自动类型转换,23默认是int转换成long
int a = 10;
double b = 2.5;
double sum = a+b;
System.out.println(sum);
//int与double相加,结果是double
}
3.3强制类型转换
当取值范围大的数据类型赋值给取值范围小的数据类型时,不能自动转换,需要强制类型转换
(谁说小受不能改变攻emoji
格式为 小范围类型 变量名 = (小范围类型) 大范围数据
double a = 3.14;
int b = a; // 错误写法
double a = 3.14;
int b = (int) a;
System.out.println(b);//正确写法,输出3
注意!强转容易出现精度损失和数据溢出风险,不要随意使用!
特殊情况:
byte 和 short 的特殊情况
- 等号右边是字面值时
如果右边是一个固定数字,而且没有超过范围,Java 会自动帮我们处理。
byte a = 10;
short b = 100;//虽然整数默认是 int 类型,但因为 10 和 100 没有超过 byte、short 的范围,所以 JVM 会自动帮我们转换
- 等号右边有变量参与运算时
只要 byte、short 变量参与运算,就会自动提升为 int 类型。
byte a = 10;
byte b = 20;
byte c = a + b; // 错误
//a + b,运算时会先变成 int + int,结果也是 int 类型。
而 int 不能直接赋值给 byte。
byte a = 10;
byte b = 20;
byte c = (byte) (a + b);
System.out.println(c);//正确写法
char 类型参与运算
Java 中的 char 本质上保存的是 Unicode 编码值。当 char 参与运算时,会自动提升为 int 类型,计算的是字符对应的 Unicode 编码值。ASCII 可以看作 Unicode 的一部分。
四、运算符
4.1算数运算符

public static void main(String[] args) {
int a = 18;
int b = 4;
int sum = a + b;
System.out.println(sum);//加,22
int sub = a - b;
System.out.println(sub);//减,14
int mul = a * b;
System.out.println(mul);//乘,72
int div = a / b;
System.out.println(div);//除,4
int mod = a % b;
System.out.println(mod);//取余,2
//"+"也表示字符串拼接:任意类型遇到字符串都会变成字符串,这是不是加法运算,而是拼接内容
System.out.println(a+b+" ");//22:先进行加法运算,再进行拼接
System.out.println(" "+a+b);// 184:仅拼接
System.out.println(a+" "+b);//18 4:拼接
System.out.println(" "+(a+b));// 22:先计算括号内的值,再进行拼接
System.out.println("a和b相加等于:"+(a+b));
int result = a+b;
System.out.println("result = " + result);//result = 22
}
自增自减运算符
单独使用
如果 ++ 或 – 单独作为一句代码,符号在前和在后效果一样
混合使用
如果 ++ 或 – 和其他语句混合使用,就要区分符号在前还是在后
其实就是先赋值还是先自增/自减的问题
| 写法 | 单独使用结果 | 混合使用规则 |
|---|---|---|
变量++ |
变量加 1 | 先使用原值,再加 1 |
++变量 |
变量加 1 | 先加 1,再使用新值 |
变量-- |
变量减 1 | 先使用原值,再减 1 |
--变量 |
变量减 1 | 先减 1,再使用新值 |
public static void main(String[] args) {
int i = 10;
//单独使用
//i ++,++i效果是一样的
++i;
System.out.println(i);//11
int j = 10;
//混合使用
//int result = ++j;
int result = j++;//j先赋值给result,再j再自增1,此时j变为11
System.out.println(result);//10
System.out.println(j);//11
int c = 100;
c = c++;
System.out.println(c);/*注意这里有个易错点,此时输出结果应该是100,这个过程是这样的:
int temp = c; // temp = 100,先把 c 原来的值拿出来
c = c + 1; // c 自增,变成 101
c = temp; // 把刚才保存的 100 再赋值给 c*/
}
4.2赋值运算符
1.基本赋值运算符
= ,-> 先看等号右边的
2.复合赋值运算符
+=, -=, *=, /=,%=
public static void main(String[] args) {
int i = 0;
i += 1;//等价于i = i+1
System.out.println(i);
byte b = 0;
b+=1;//这样写是正确的,复合赋值运算符内部会自动进行强制类型转换
System.out.println(b);
}
4.3关系运算符
主要用于比较,做判断条件,结果为true or false
public static void main(String[] args) {
int i = 1;
int j = 2;
int k = 1;
boolean result01 = i == j;// false,i与j比较是否相等
System.out.println(result01);
System.out.println(i > j);// false,i是否大于j
System.out.println(i < j);// true,i是否小于j
System.out.println(i >= k);// true,i是否大于等于k
System.out.println(i <= k);// true,i是否小于等于k
System.out.println(i != k);// false,i是否不等于k
}
4.4逻辑运算符
逻辑运算符的作用是:连接多个判断条件,最终得到一个 boolean 类型的结果(true or false)。人类不感谢罗辑(哭
| 符号 | 说明 |
|---|---|
| && | 短路与,并且 符号前后有一个是false,结果就是false并退出;符号前后都是true,结果才是true |
| || | 短路或 符号前后有一个为true并退出,结果就是true |
| ! | 非,取反 |
| ^ | 异或: 符号前后结果一样为false,不一样为true |
| &,\ | 逻辑与,逻辑或,符号前后句都要判断,运行 |
public static void main(String[] args) {
int i = 1;
int j = 2;
int k = 1;
boolean result = (i > j) && (i == k);//与运算符,如果符号前面为false.符号后面就不判断了
System.out.println(result);// false
boolean result2 = (i > j) || (i == k);//或运算符,如果符号前面为true,符号后面就不判断了
System.out.println(result2);// true
boolean result3 = !(i > j);//逻辑非运算符
System.out.println(result3);// true
int a = 1;
int b = 2;
boolean result4 = ++a > 100 & ++b > 100;
System.out.println(result4);// false
System.out.println(a);// 2
System.out.println(b);// 3,为什么?单个&,|的时候,不仅要判断符号前面,还要判断符号后面,所以符号后面的++b也会执行,如果是&&,||则不执行
}
4.5三元运算符
格式:
boolean表达式?表达式1:表达式2
意为:先判断boolean表达式,如果是true,就运行?后面的表达式1,否则就运行:后面的表达式2
public static void main(String[] args) {
int grade = 100;
String result1 = grade>=60?"OK":"NO";//满足条件则返回第一个值,否则返回第二个值
System.out.println(result1);
}
总结
本文主要介绍了 Java 入门阶段最基础的几个知识点,包括常量、变量、标识符、数据类型转换以及常见运算符。
其中,常量表示程序运行过程中不会改变的数据,变量表示程序运行过程中可以改变的数据。定义变量时,需要注意变量必须先定义、再赋值、后使用,并且变量名不能在同一个作用域中重复。
在数据类型转换部分,需要重点记住一句话:小范围类型转换为大范围类型可以自动转换,大范围类型转换为小范围类型需要强制转换。强制转换虽然可以解决类型不匹配的问题,但可能会造成精度损失或数据溢出,所以不要随意使用。
在运算符部分,算术运算符用于数学计算,赋值运算符用于给变量赋值,关系运算符和逻辑运算符通常用于判断条件,三元运算符可以根据条件从两个结果中选择一个。
这些内容虽然基础,但非常重要。只有把这些规则理解清楚,后面学习 if 判断、for 循环、数组和面向对象时,才能更容易看懂代码,也能更快解决程序中的错误。
更多推荐

所有评论(0)