资讯专栏INFORMATION COLUMN

【Java】第四章 操作符

widuu / 592人阅读

摘要:算数操作符基本算数操作符任意运算单元的长度超过如果有任何运算单元的长度超过,那么运算结果就按照最长的长度计算结果类型是的运算结果是型,所以要进行强制转换任意运算单元的长度小于如果任何运算单元的长度都不超过那么运算结果就按照来计算结果类型

1 算数操作符 (1) 基本算数操作符

+ - * /

public class HelloWorld {
    public static void main(String[] args) {
        int i = 10;
        int j = 5;
        int a = i+j;
        int b = i - j;
        int c = i*j;
        int d = i /j;
    }
}
(2) 任意运算单元的长度超过int

如果有任何运算单元的长度超过int,那么运算结果就按照最长的长度计算

int a = 5;

long b = 6;

a+b结果类型是long

public class HelloWorld {

    public static void main(String[] args) {
        int a = 5;
        long b = 6;
        int c = (int) (a+b); //a+b的运算结果是long型,所以要进行强制转换
        long d = a+b; 
    }
}
(3) 任意运算单元的长度小于int

如果任何运算单元的长度都不超过int,那么运算结果就按照int来计算

byte a = 1;

byte b= 2;

a+b结果类型是int

public class HelloWorld {

    public static void main(String[] args) {
        byte a = 1;
        byte b= 2;
        byte c = (byte) (a+b); //虽然a b都是byte类型,但是运算结果是int类型,需要进行强制转换
        int d = a+b;
    }
}
(4) %取模
public class HelloWorld {

    public static void main(String[] args) {
        int i = 5;
        int j = 2;
        System.out.println(i%j); //余数为1
    }
}
(5) 自增 自减

++ -- 在原来的基础上增加1或者减少1

public class HelloWorld {

    public static void main(String[] args) {
        int i = 5;
        i++;
        System.out.println(i);//输出为6
 
    }
}
(6) 自增 自减操作符置前以及置后的区别

i++; 先取值,再运算

++i; 先运算,再取值

public class HelloWorld {
    public static void main(String[] args) {
        int i = 5;
        System.out.println(i++); //输出5
        System.out.println(i);   //输出6
         
        int j = 5;
        System.out.println(++j); //输出6
        System.out.println(j);   //输出6
    }
}
2 关系操作符

> 大于

>= 大于或等于

< 小于

<= 小于或等于

== 是否相等

!= 是否不等

public class HelloWorld {
    public static void main(String[] args) {
        int a = 5;
        int b = 6;
        int c = 5;
        
        System.out.println(a>b);  //返回 false
        System.out.println(a>=c);  //返回 true
        
        System.out.println(a==b); //返回false
        System.out.println(a!=b);//返回true
        
    }
}
3 逻辑操作符 (1) 长路与和短路与

无论长路与&还是短路与&&,两边的运算单元都是布尔值

都为真时,才为真

任意为假,就为假

区别

长路与& 两侧,都会被运算

短路与&& 只要第一个是false,第二个就不进行运算了

public class HelloWorld {
    public static void main(String[] args) {
        //长路与  无论第一个表达式的值是true或者false,第二个的值,都会被运算
        int i = 2;
        System.out.println( i== 1 & i++ ==2  ); //无论如何i++都会被执行,所以i的值变成了3
        System.out.println(i);
         
        //短路与 只要第一个表达式的值是false的,第二个表达式的值,就不需要进行运算了
        int j = 2;
        System.out.println( j== 1 && j++ ==2  );  //因为j==1返回false,所以右边的j++就没有执行了,所以j的值,还是2
        System.out.println(j);      
         
    }
}
(2) 短路或和长路或

无论长路或|还是短路或||,两边的运算单元都是布尔值

都为假时,才为假

任意为真,就为真

区别

长路或| 两侧都会被运算

短路或|| 只要第一个是true的,第二个就不进行运算了

public class HelloWorld {
    public static void main(String[] args) {
        //长路或  无论第一个表达式的值是true或者false,第二个的值,都会被运算
        int i = 2;
        System.out.println( i== 1 | i++ ==2  ); //无论如何i++都会被执行,所以i的值变成了3
        System.out.println(i);
         
        //短路或 只要第一个表达式的值是true的,第二个表达式的值,就不需要进行运算了
        int j = 2;
        System.out.println( j== 2 || j++ ==2  );  //因为j==2返回true,所以右边的j++就没有执行了,所以j的值,还是2
        System.out.println(j);      
    }
}
(3) 取反

取反!

真变为假

假变为真

public class HelloWorld {
    public static void main(String[] args) {
        boolean b = true;
         
        System.out.println(b); //输出true
        System.out.println(!b);//输出false
         
    }
}
(4) 异或^

异或^

不同,返回真

相同,返回假

public class HelloWorld {
    public static void main(String[] args) {
        boolean a = true;
        boolean b = false;
         
        System.out.println(a^b); //不同返回真
        System.out.println(a^!b); //相同返回假
 
    }
}
4 位操作符

5 赋值操作符

赋值操作

=

对本身进行运算,并赋值

+=

-=

*=

/=

%=

&=

|=

^=

<<=

>>=

>>>=

(1) 赋值操作

赋值操作的操作顺序是从右到左

int i = 5+5;

首先进行5+5的运算,得到结果10,然后把10这个值,赋给i

public class HelloWorld {
    public static void main(String[] args) {
        int i = 5+5;
    }
}
(2) 对本身进行运算,并赋值

+=即自加

i+=2;

i=i+2;

其他的 -= , *= , /= , %= , &= , |= , ^= , >= , >>>= 都是类似,不做赘述

public class HelloWorld {
    public static void main(String[] args) {
        int i =3;
        i+=2;
        System.out.println(i);
         
        int j=3;
        j=j+2;
        System.out.println(j);      
 
    }
}
6 三元操作符

表达式?值1:值2

如果表达式为真 返回值1

如果表达式为假 返回值2

public class HelloWorld {
    public static void main(String[] args) {
        int i = 5;
        int j = 6;
 
        int k = i < j ? 99 : 88;
 
        // 相当于
        if (i < j) {
            k = 99;
        } else {
            k = 88;
        }
        System.out.println(k);
    }
}
7 Scanner (1) 使用Scanner读取整数

使用Scanner类,需要在最前面加上import java.util.Scanner;
表示导入这个类,才能够正常使用

import java.util.Scanner;
 
public class HelloWorld {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int a = s.nextInt();
        System.out.println("第一个整数:"+a);
        int b = s.nextInt();
        System.out.println("第二个整数:"+b);
    }
}
(2) 使用Scanner读取浮点数
import java.util.Scanner;
  
public class HelloWorld {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        float a = s.nextFloat();
        System.out.println("读取的浮点数的值是:"+a);
 
    }
}
(3) 使用Scanner读取字符串
import java.util.Scanner;
  
public class HelloWorld {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        String a = s.nextLine();
        System.out.println("读取的字符串是:"+a);
    }
}
(4) 读取了整数后,接着读取字符串

如果在通过nextInt()读取了整数后,再接着读取字符串,读出来的是回车换行:" ",因为nextInt仅仅读取数字信息,而不会读走回车换行" ".

如果在业务上需要读取了整数后,接着读取字符串,那么就应该连续执行两次nextLine(),第一次是取走整数,第二次才是读取真正的字符串

import java.util.Scanner;
   
public class HelloWorld {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int i = s.nextInt();
        System.out.println("读取的整数是"+ i);
        String rn = s.nextLine();
        String a = s.nextLine();
        System.out.println("读取的字符串是:"+a);
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67725.html

相关文章

  • java 8 实战》读书笔记 -四章 引入流

    摘要:第四章引入流一什么是流流是的新成员,它允许你以声明性方式处理数据集合通过查询语句来表达,而不是临时编写一个实现。 第四章 引入流 一、什么是流 流是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现)。就现在来说,你可以把它们看成遍历数据集的高级迭代器。此外,流还可以透明地并行处理,你无需写任何多线程代码。 下面两段代码都是用来返回低...

    jeyhan 评论0 收藏0
  • Java8实战》-四章读书笔记(引入流Stream)

    摘要:内部迭代与使用迭代器显式迭代的集合不同,流的迭代操作是在背后进行的。流只能遍历一次请注意,和迭代器类似,流只能遍历一次。 流(Stream) 流是什么 流是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现)。就现在来说,你可以把它们看成遍历数据集的高级迭代器。此外,流还可以透明地并行处理,你无需写任何多线程代码了!我会在后面的笔记中...

    _ivan 评论0 收藏0
  • 实战java高并发程序设计四章-锁优化

    摘要:锁的使用建议减少锁持有时间减少锁粒度读写锁替代独占锁锁分离锁粗化减少锁的持有时间减少锁的持有时间有助于降低冲突的可能性进而提升并发能力减少锁粒度例如内部分为个加锁时不会像一样全局加锁只需要对相应加锁但是如果需要获取全局的信息比如首先会使用无 锁的使用建议 减少锁持有时间 减少锁粒度 读写锁替代独占锁 锁分离 锁粗化 减少锁的持有时间 减少锁的持有时间有助于降低冲突的可能性,进而...

    W_BinaryTree 评论0 收藏0
  • java 8 实战》读书笔记 -第十四章 函数式编程的技巧

    摘要:但是,最好使用差异化的类型定义,函数签名如下其实二者说的是同一件事。后者的返回值和初始函数的返回值相同,即。破坏式更新和函数式更新的比较三的延迟计算的设计者们在将引入时采取了比较特殊的方式。四匹配模式语言中暂时并未提供这一特性,略。 一、无处不在的函数 一等函数:能够像普通变量一样使用的函数称为一等函数(first-class function)通过::操作符,你可以创建一个方法引用,...

    nemo 评论0 收藏0
  • 《大型网站系统与Java中间件》读书笔记 (中)

    摘要:文本已收录至我的仓库,欢迎回顾上一篇大型网站系统与中间件读书笔记一这周周末读了第四章,现在过来做做笔记,希望能帮助到大家。没错,我们通过肯定是可以完成两个系统之间的通信的问题的。 前言 只有光头才能变强。文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 回顾上一篇: 《大型网站系统与Java中间件》读书笔记(一)...

    fredshare 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<