Java变量运算符

📅 2026/7/21 18:44:15
Java变量运算符
1 变量1.1 变量概念在程序执行的过程中在某个范围内其值可以发生改变的量。从本质上来说变量是内存中存储数据的一块区域可以存数据和取数据也可以改变数据。定义格式:格式一: 数据类型 变量名 字面量值; 格式二: 数据类型 变量名; 变量名 字面量值;1.2 标识符作用:给包类方法变量起名字的。组成规则(硬性规定):由字符,下划线_,美元符$组成。这里的字符采用的是unicode字符集包含了英文大小写字母中文字符数字字符。但是符号只有下划线和美元符。​ 不能以数字开头 2age​ 不能是Java中的关键字命名规则(建议)见名知意常见命名的规则类每一个类名单词的首字母都要大写变量或方法一个单词时首字母小写多个单词从第二个单词开始首字母大写包(其实就是文件夹用于对类进行管理)全部小写多个包之间用.隔开包名一般都是公司域名反写常量全部使用大写 单词之间用 _ 隔开1.3 计算机存储单元计算机中无论是内存还是硬盘计算机存储设备的最小信息单元叫位(bit),我们称之为比特位。使用小写字母b表示。计算机中最小的存储单元叫字节(byte),通常用大写字母B表示一个字节由连续的8个位组成。1B 8bit1KB 1024B1MB 1024KB1GB 1024MB1TB 1024GB1PB 1024TB1EB 1024PB1ZB 1024EB1YB 1024ZB1.4 数据类型用于限定变量的范围。数据类型分类:基本数据类型整数类型byte short int long浮点(小数)类型float double字符类型char布尔类型boolean引用数据类型四类八种字节数数据范围整数byte1-128 ~ 127整数short2- 2 ^ 15 ~ 2 ^ 15 - 1整数int(默认)4- 2 ^ 31 ~ 2 ^ 31 - 1整数long8- 2 ^ 63 ~ 2 ^ 63 - 1小数float4- 3.403E38 ~ 3.403E38小数double(默认)8-1.798E308 ~ 1.798E308字符char20 - 65535布尔boolean1true falselong类型需要在数字后面添加l或者L,建议使用Lfloat类型需要在数字后面添加f或者F建议使用F1.5 定义变量public static void main(String[] args) { // 定义变量 // 格式 数据类型 变量名 字面量值; // 整数 byte num1 10; System.out.println(num1); short num2 1000; System.out.println(num2); int num3 1400000000; System.out.println(num3); long num4 8000000000L; System.out.println(num4); // 浮点型 float num5 3.14F; System.out.println(num5); double num6 3543254.7867; System.out.println(num6); // 字符型 char ch1 中; System.out.println(ch1); // 布尔型 boolean flag true; System.out.println(flag); int a; a 20; System.out.println(a); }1.6 转义字符\ 单引号 \ 双引号 \t 制表符 \r 回车 \n 换行 \\ 反斜杠 \u0000 默认值1.7 变量的注意事项在java中,变量如果没有进行赋值是不可以直接使用的。变量只有在自己所属的作用域之内才有效出了作用域之后就不能使用了作用域就是从变量定义的那一行开始到所在的大括号结束为止。{ int a 10; System.out.println(a); }一行代码中可以一次性定义多个相同类型的变量并赋值。// int a 10; // int b 20; // int c 30; // 简便写法 int a 10,b 20,c 30; System.out.println(a); System.out.println(b); System.out.println(c);1.8 类型转换boolean 没有类型转换当数据类型不一致时需要进行类型转换。自动(隐式)类型转换:由范围小的数据类型转换为范围大的数据类型。特点:代码不需要处理自动完成。public static void main(String[] args) { int a 10; // long(大) int(小) long b a; System.out.println(a); System.out.println(b); // long(大) int(小) long c 1000; // double(大) float(小) double d 3.14F; // 任意一个整数都可以赋值给小数变量但可能会出现精度损失!!! // 虽然int和float都是占4个字节但是int类型中只表示整数所以表示的整数比float多 int num1 2111111111; float f num1; System.out.println(f); } }强制(显式)类型转换:由范围大的数据类型转换成范围小的数据类型。(由大到小)特点:需要处理否则代码编译不通过处理格式: 范围小的数据类型 变量名 (范围小的数据类型) 范围大的数值;public static void main(String[] args) { // 强制类型转换 long a 100L; // int(小) long(大) int b (int)a; System.out.println(b); // float(小) double(大) float f (float) 3.14; System.out.println(f); // 强制类型转换有可能会出现精度损失不推荐使用! // int(小) long(大) int num1 (int)8000000000L; System.out.println(num1); // 注意:把小数转换成整数时需要强制类型转换 // 当小数转换成整数时不是四舍五入而是直接舍弃小数部分 int num2 (int)3.99; System.out.println(num2); }类型转换注意事项:public static void main(String[] args) { // int(大) char(小) int a 中; System.out.println(a); // byte/short/char在运算时会先提升为int类型再进行计算 byte num1 10; // byte(小) int (大) byte num2 (byte)(num1 1); System.out.println(num2); char zifu1 A; System.out.println(zifu1 1); byte num3 30; short num4 100; // short int int short num5 (short) (num3 num4); System.out.println(num5); // 对于byte/short/char类型如果右侧没有超出范围那么编译器会自动补全(byte) (short) (char) // byte(小) int(大) byte num6 100; char c 98;// char c b; System.out.println(c); short s b;// short s 98; System.out.println(s); // char c2 -1;// -1已经超出了char类型的范围所以编译报错! // 编译是一行行向下编译,编译到下一行时会直接将右边的值计算出来 // byte b1 30; byte b1 10 20; // 下面的代码也是分开进行编译编译char c3 b之后把b存在了c3中 // 编译short s2 c3时,并不知道c3的值是多少,只知道c3是char类型char类型有可能超出short类型的范围所以编译失败。 // char c3 b; // short s2 c3;// 编译失败 }2 运算符对常量和变量进行操作的符号就是运算符。用运算符把常量或者变量连接起来的符合java语法的式子就是表达式。运算符分类:算术运算符赋值运算符关系运算符逻辑运算符三元运算符位运算符2.1 算术运算符 加 - 减 * 乘 / 除 % 取模public static void main(String[] args) { // 加法 int a 10; int b 20; System.out.println(a b); // 减法 System.out.println(a - b); // 乘法 System.out.println(a * b); // 除法 // 在java中两个整数相除获取的结果一定是整数。 // 只考虑商不考虑余数 System.out.println(a / b); int c 1 / 60; System.out.println(c); // 对于小数相除结果该是多少就是多少 只要 / 两端出现小数结果肯定是小数 System.out.println(1 / 60.0); // 注意:计算机不能对小数进行精确计算! double d 3.0 - 2.99; System.out.println(d); System.out.println(1 / 3.0); System.out.println(1.0 / 3); // int i 1 / 0; // 会出现异常在控制台中输出异常并且项目停止 double i 1.0 / 0; System.out.println(i); // Infinity 正无穷 System.out.println(-1.0 / 0);// -Infinity 负无穷 System.out.println(0.0 / 0);// NaN not a number 非数字 // 取模 取余数 System.out.println(a % b); System.out.println(1 % 3); // 小数取余 System.out.println(3.6 % 2);// 1.6 System.out.println(3 % 1.4);// 0.2 // 对于负数的取余就是看表达式左边的符号,左边是负数结果就是负数左边是正数结果就是正数 System.out.println(-5 % 3);// -2 System.out.println(5 % -3);// 2 System.out.println(-5 % -3);// -2 // 加法拼接字符串 // 任意的类型和字符串相加结果肯定是字符串 // HelloWorld1020 System.out.println(HelloWorld 10 20); System.out.println(a的值是:\t a); }2.2 自增自减运算符自增运算符: 自减运算符: --可以对变量自身进行1 或者-1的操作可以放在变量前面也可以放在变量后面放在变量前面和后面的区别:对于单独使用,放在变量前面或者后面没有任何区别对于混合使用如果是在变量前面那么先对变量自身1或者-1,然后再进行其他操作如果是在变量后面那么先进行其他操作再对自身进行1或者-1public static void main(String[] args) { // 自增自减运算符 // 单独使用 int a 10; a; System.out.println(a); // 混合使用 int b 10; System.out.println(b);// 10 先输出 对b自身加1 System.out.println(b);// 11 int c 10; System.out.println(c);// 11 System.out.println(c);// 11 int num1 100; int num2 num1 1; System.out.println(num2);// 102 System.out.println(num1);// 101 int num3 30; int num4 40; int num5 num3 num4--; System.out.println(num3);// 31 System.out.println(num4);// 39 System.out.println(num5);// 71 // byte/short/char使用或者--之后结果还是它们原来的类型。因为底层进行了强制类型转换 byte by 127; by;// by (byte) (by 1) System.out.println(by);// -128 }2.3 赋值运算符赋值运算符 (常用) 把右边的值赋值给左边 扩展: - * / %public static void main(String[] args) { // int a 10; a 20;// a a 20; System.out.println(a); // - a - 10;// a a - 10; System.out.println(a); // * a * 10;// a a * 10; System.out.println(a); // / a / 300;// a a / 300; System.out.println(a); // % int b 10; b % 20; System.out.println(b); // 注意:隐藏了一个强制类型转换 byte num1 10; num1 10;// num1 (byte)(num1 10); System.out.println(num1); // java中的连等赋值 面试造核弹工作拧螺丝 int c 4; // 4 4 - 16 int d c c - c * c; System.out.println(d);// -8 int x 4; // 4 4 - 4 * 5 int y x x - x * x; System.out.println(y的值是 y);// -12 }2.4 关系运算符关系运算符的结果一定是布尔类型如果结果成立就是true如果结果不成立就是false ! public static void main(String[] args) { int a 10; int b 20; int c 10; System.out.println(a c); System.out.println(a ! b); System.out.println(a b); System.out.println(a b); System.out.println(a c); System.out.println(a c); }2.5 逻辑运算符逻辑运算符要连接的都是布尔值 与(且) 全部都是true结果才是true只要有一个是false结果就是false | 或 只要有一个是true那么结果就是true全部是false结果才是false ^ 异或 相同就是false不同就是true ! 取反 如果是true就是false。如果是false结果就是true || 和 | 的区别 || 具有短路效果如果左边的表达式已经能够确定最终的结果后面的表达式不会再执行,效率更高public static void main(String[] args) { // 逻辑运算符 int a 10; int b 20; int c 10; // true true System.out.println((a c) (a b)); // true | false System.out.println((a ! b) | (a ! c)); // true ^ true System.out.println((a c) ^ (b c)); // true ^ false System.out.println((a c) ^ (a b)); System.out.println(!(a c)); // | ^ 可以连接多个表达式 !只能连接一个表达式 System.out.println((a c) (a b) (a c)); System.out.println((a c) (a b)); // 短路效果 int x 10; System.out.println((3 4) (x 100)); System.out.println(x); }测试 和|| 的优先级// 比 || 的优先级高 System.out.println(false true || true); System.out.println(true || true false);2.6 三元运算符三元运算就是有三个元素参与的运算。格式数据类型 变量名 (布尔表达式) ? 表达式1 : 表达式2;如果布尔表达式的结果是true,那么将表达式1的结果赋值给变量如果布尔表达式的结果是false那么将表达式2的结果赋值给变量public static void main(String[] args) { // 三元运算 // 求 a b的最大值 int a 30; int b 50; int max (a b) ? a : b; System.out.println(最大值是 max); // 注意:变量的数据类型必须和表达式的一样。 // boolean flag (a b) ? a : b;// 编译失败 }