04 运算符

运算符

运算符

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。

分类
  1. 算数运算符
  2. 赋值运算符
  3. 关系运算符(比较运算符)
  4. 逻辑运算符
  5. 位运算符
  6. 三元运算符

算数运算符

​ 算术运算符是对数值类型的变量进行运算的。在Java程序中使用的非常多。

运算符运算结果
+正号+77
-负号-7-7
+b = 11;-b-11
-1+\12
*1*66
/6/23
%取余12%52
前++
后++
自增(前)先运算后取值
自增(后)先取值后运算
a=2;b=++a;
a=2;b=a++
a=3,b=3
a=3,b=2
前–
后–
自减(前)先运算后取值
自减(后)先取值后运算
a=2;b=–a;
a=2;b=a–
a=1,b=1
a=1,b=2
+字符串相加“abc”+“def”“abcdef”
public class ArithmeticOperator {
    public static void main(String[] args) {
        System.out.println(10 / 4); //从数学来看是 2.5, java 中是 2
        System.out.println(10.0 / 4); //java 中是 2.5
        double d = 10 / 4;//java 中 10 / 4 = 2, 2=>2.0
        System.out.println(d);// 是 2.0
        // % 的本质 看一个公式!!!! a % b = a - a / b * b
        // -10 % 3 => -10 - (-10) / 3 * 3 = -10 + 9 = -1
        // 10 % -3 = 10 - 10 / (-3) * (-3) = 10 - 9 = 1
        // -10 % -3 = (-10) - (-10) / (-3) * (-3) = -10 + 9 = -1
        System.out.println(10 % 3); //1
        System.out.println(-10 % 3); // -1
        System.out.println(10 % -3); //1
        System.out.println(-10 % -3);//-1
        
        int i = 10;
        i++;//自增 等价于 i = i + 1; => i = 11
        ++i;//自增 等价于 i = i + 1; => i = 12
        System.out.println("i=" + i);//12
        int j = 8;
        //int k = ++j; //等价 j=j+1;k=j;
        int k = j++; // 等价 k =j;j=j+1;
        System.out.println("k=" + k + "j=" + j);//8 9
    }
}
细节说明
  1. 对于除号/,它的整数除和小数除有区别:整数之间做除法时,只保留整数部分而舍弃小数部分。
  2. 当一个数取模时,可以等价a % b = a - a / b * b,这样我们就可以看到取模的一个本质。
  3. 当自增当做一个独立表达式时,无论++i,还是i++都是一样的。
  4. 当自增做一个表示时使用j = ++i 等价 j = i + 1,i = i+1;
  5. 当自增做一个表示时使用j = i++ 等价 j = i, i = i+1;
练习
  1. 假如还有59天放假,问合xx多少个星期零xx天
  2. 定义一个变量保存华氏摄氏度,华氏温度转换摄氏温度的公式为:5/9*(华氏摄氏度-100),请求出对应的摄氏温度。(234.5)
public class ArithmeticOperatorExercise{
    public static void main(String[] args){
        int days = 59;
        int weeks = days / 7;
        int leftDays = days % 7;
        System.out.println(days + "天 合" + weeks + "星期零" + leftDays + "天");
        
        double huaShi = 234.5;
        double sheShi = 5.0 / 9 * (huaShi - 100);
        System.out.println("华氏温度" + huaShi + " 对应的摄氏温度=" + sheShi);
        
    }
}

关系运算符(比较运算符)

  1. 关系运算符的结果都是boolean类型,不是true就是false
  2. 关系表达式通常用在条件结构循环结构中。
运算符运算范例结果
==相等于8 == 7false
!=不等于8 != 7true
<小于8 < 7false
>大于8 > 7true
<=小于等于8<=7false
>=大于等于8>=7true
instanceof检查是否为类对象
其实是检查类是否有继承关系
“hsp” instanceof Stringtrue
public class ArithmeticOperatorExercise{
    public static void main(String[] args){
        int a = 9;
        int b = 8;
        System.out.println(a > b); //true
        System.out.println(a >= b); //true
        System.out.println(a <= b); //false
        System.out.println(a < b);//false
        System.out.println(a == b); //false
        System.out.println(a != b); //true
        boolean flag = a > b; //true
        System.out.println("flag=" + flag);
    }
}
细节说明
  1. 关系运算符的结果是boolean型,结果不是true就是false。
  2. 关系运算符组成的表达式,我们叫关系表达式。
  3. 比较运算符是双等于"==" 区别运算符号"="

逻辑运算符

用于连接多个条件(多个关系表达式)。

  1. 短路与 && , 短路或 ||,取反 !

  2. 逻辑与 &,逻辑或 |, 逻辑异或^

aba&ba&&ba|ba||b!aa^b
TTTTTTFF
TFFFTTFT
FTFFTTTT
FFFFFFTF
短路与&& 与 逻辑与&的区别
  1. &&短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false,效率高。
  2. & 逻辑与:不管第一个条件是否为 false,第二个条件都要判断,效率低
  3. 开发中, 我们使用的基本是使用短路与&&
短路或|| 与 逻辑或|的区别
  1. ||短路或:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false,效率高。
  2. | 逻辑或:不管第一个条件是否为 false,第二个条件都要判断,效率低
  3. 开发中, 我们使用的基本是使用短路与||
! 取反

如果条件本身成立,结果为 false,否则为 true 。

^逻辑异或

a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false

System.out.println( (4 < 1) ^ (6 > 3) ); // true

赋值运算符

赋值运算符就是将某个运算后的值,赋给指定的变量。

分类
  • 基本赋值运算符= int a = 10;
  • 复合赋值运算符
    += ,-= ,*= , /= ,%= 等 , 重点讲解一个 += ,其它的使用是一个道理
    a += b; (等价 a = a + b; )
    a -= b; (等价 a = a - b; )
特点
  1. 运算顺序从右往左 int num = a + b + c;
  2. 赋值运算符的左边 只能是变量,右边 可以是变量、表达式、常量值
    int num = 20; int num2= 78 * 34 - 10; int num3 = a;
  3. 复合赋值运算符等价于下面的效果
    a+=3;等价于 a=a+3; 其他类推
  4. 复合赋值运算符会进行类型转换
    byte b = 2; b+=3; b++;
//复合赋值运算符会进行类型转换 
byte b = 3; b += 2; 
// 等价 
b = (byte)(b + 2); 
b++; // b = (byte)(b+1);

三目运算符

条件表达式 ? 表达式 1: 表达式 2;

运算规则
  1. 如果条件表达式为 true,运算后的结果是表达式 1;

  2. 如果条件表达式为 false,运算后的结果是表达式 2;

说明:这部分的例题因为博主有基础,此处就略过了。(OS:太多了,不想写了。)

运算符优先级

运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。

只有单目运算符、赋值运算符是从右向左运算的。

表格
. () {} ; ,
R -> L++ – ~ !(data type)
L -> R* / %
L -> R+ -
L -> R<< >> >>> 位移
L -> R< > <= >= instanceof
L -> R== !=
L -> R&
L -> R^
L -> R|
L -> R&&
L -> R||
L -> R? :
R -> L= *= /= %=
+= -= <<= >>=
>>>= &= ^= |=

从上到下,同行顺序从左列展示。

注意,通常会使用括号来改变优先顺序。

标识符的命名规则和规范

标识符

Java对各种变量、方法和类等命名时使用的字符序列称为标识符。

理解:凡是可以自己起名字的地方都叫 标识符。

规则(必须遵守)
  1. 26个字母的大小写,0-9, _或$组成。
  2. 不可以使用数字开头。
  3. 不可以使用关键字和保留字,但是能包含其。
  4. Java中严格区分大小写,长度无限制。
  5. 标识符不能包含空格。
规范(必须注意)
  1. 包名:多单词组成时所有单词全部小写。
  2. 类名、接口名、使用多单词组成时,所有单词的首字母大写。XxxYyyZzz(大驼峰命名规范)
  3. 变量名,方法名:多单词组成时,第一个单词小写,其他单词首字母大写。(小驼峰)
  4. 常量名:所有的单词字母都大写。多个单词组成时中间加入下划线。
  5. 这些规范需要遵守,所有人使用一个规范可以简单明了的进行呢开发。

关键字

被Java语言已经赋予了特殊的含义。用做专门用途的字符串

用多了就知道了。不需要专门的记忆。

  • 用于定义数据类型的关键字:
    class interface enum byte short int long float double char boolean void
  • 用于定义数据类型值的关键字:
    true false null
  • 用于定义流程控制的关键字:
    if else switch case default while do for break continue return
  • 用于定义访问权限修饰符的关键字:
    private protected public
  • 用于定义类,函数,变量修饰符的关键字
    abstract final static synchronized
  • 用于定义类与类之间关系的关键字。
    extends implements
  • 用于定义建立案例以及引用实例,判断实例的关键字:
    new this super instanceof
  • 用于异常处理的关键字
    try catch finally throw throws
  • 用于包的关键字
    package import
  • 其他修饰符关键字
    native strictfp transient volatile assert

键盘输入语句

在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。Input.java , 需要一个 扫描器(对象), 就是Scanner

使用步骤
  1. 导入该类所在包。
import java.util.Scanner;
  1. 创建该类对象
  2. 调用里面的功能

使用样例。

import java.util.Scanner;

public class Input {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入姓名");
        String name = sc.next();

        System.out.println("请输入年龄");
        int age = sc.nextInt();

        System.out.println("请输入薪资");
        double salary = sc.nextDouble();

        System.out.println("用户输入的名字是:" + name);
        System.out.println("用户输入的年龄是:" + age);
        System.out.println("用户输入的薪资是:" + salary);
    }
}

进制转换

这部分内容是基本功建议自行学习。

韩顺平java从p87开始一直看到p101

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黎丶辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值