美文网首页
Java运算符

Java运算符

作者: Automan_mm | 来源:发表于2020-03-18 16:44 被阅读0次

1.运算符介绍

运算符分类

2.算数运算符

  • 二元运算符:+、-、*、/、%
    整数运算:
    (1)如果两个操作数有一个为long,则结果也为long;
    (2)没有long时,结果为int,即使操作数全为short、byte,结果也是int。
    浮点运算:
    (1)如果两个操作数中有一个为double,则结果为double;
    (2)只有两个操作数均为float,结果才为float。
    取模运算:操作数可以是浮点数,但一般使用整数,结果是“余数”,“余数”符号和左边操作数相同,如7%3=1,-7%3=-1,7%-3=1。
  • 一元运算符:++,--
byte a = 1;
int b = 2;
long b2 = 3;
//byte c = a + b;  //报错,不能把int类型赋给byte,报错
//int c2 = b2 + b;  //报错,不能把long类型赋给int,报错

//float f1 = 3.14;  //报错,3.14默认为double类型
double d = b +b2;  //不报错,表述范围从小到大时可以自动类型转换
//float d2 = f1 +6.2;  //报错,不能把double类型赋给float

System.out.println(-9%5);  //-4

int  a = 3;
int b = a++;  //先给b赋值,a再自增
System.out.println("a="+a+"\nb="+b);  //a=4,b=3
a = 3;
b = ++a;  //a先自增,再给b赋值
System.out.println("a="+a+"\nb="+b);  //a=4,b=4

3.赋值运算符及其扩展运算符

  • 赋值运算符:=
  • 扩展运算符:+=、-=、*=、/=、%=、

举例:
a+=b相当于a=a+b
a=b+3相当于a=a(b+3)

4.关系运算符

关系运算符的结果是布尔值,true或false。 关系运算符

(1)==和!=是所有(基本和引用)数据类型都可以使用;
(2)>、>=、<、<=仅针对数值类型以及char类型。

char b = 'a';
char b2 = 'c';
System.out.println((int)b);  //97
System.out.println(0+b2);  //99
System.out.println(b<b2);  //true

5.逻辑运算符

逻辑运算符

注:短路与和短路或采用短路的方式,从左到右计算,如果只通过运算符左边的操作数就能确定该逻辑表达式的值,则不会继续计算运算符右边的操作数,提高效率。实际应用中,短路与和短路或更常用。

boolean b1 = true;
boolean b2 = false;
System.out.println(b1&b2);
System.out.println(b1|b2);
System.out.println(b1^b2);
System.out.println(!b1);

//boolean b3 = 1>2&2<(3/0);  //报错,除数不能为0
boolean b3 = 1>2&&2<(3/0);  //短路与,第一个操作数的值为false,则不需要再计算后面的操作数
System.out.println(b3);  //false

6.位运算符

位运算符

(1)&和|既是逻辑运算符,也是位运算符。如果两侧操作数都是boolean类型,就作为逻辑运算符;如果两侧操作数均为整数类型,就是位运算符。
(2)^不是乘方运算,而是“异或”操作。

int a = 3;
int b = 4;
System.out.println(a&b);  //0
System.out.println(a|b);  //7
System.out.println(a^b);  //7
System.out.println(~a);  //-4

int c = 3<<2;  //左移两位,相当于乘4
System.out.println(c);  //12
System.out.println(12>>1);  //6,右移一位,相当于除以2

7.字符串连接符

  • 当+两边是数字时,表示加号;当+两边只要有一个为字符串时,它就表示字符串连接符。
String a = "3";
int b = 4;
int c = 5;
char d = 'a';
System.out.println(a+b);  //34
System.out.println(a+b+c);  //345
System.out.println(b+c+a);  //93
System.out.println(d+4);  //97+4=101

注:双引号表示字符串,单引号表示char。

8.条件运算符

语法格式:x ? y : z
其中x为boolean类型表达式,x为true则返回y,否则返回z,可以代替简单的if...else...

int score = 80;
int x = -100
String type = score<60?"不及格":"及格";
System.out.println(type);  //及格

//等价于
if(score<60){
    System.out.println("不及格");
}else{
    System.out.println("及格");
}

System.out.println(x > 0 ? 1 : (x == 0 ? 1 : -1));  //-1

9.运算符的优先级

运算符的优先级

(1)总的来说,算术运算符>关系运算符>逻辑运算符>条件运算符>赋值运算符;
(2)不需要死记硬背,优先使用小括号来组织表达式;
(3)逻辑运算符中,逻辑非>逻辑与>逻辑或。比如,a||b&&c的运算结果是a||(b&&c),而不是(a||b)&&c。

10.自动类型转换

  • 自动类型转换:指的是容量小的数据类型可以自动转换为容量大的数据类型。
    注:容量小/大指的不是字节大小,而是数据类型表示的范围,比如虽然long占8个字节,float占4个字节,但float表示的范围比long大,所以long可以自动转换为float。
  • 如下图所示,实线表示无数据丢失的自动类型转换,而虚线表示在转换时可能会有精度的损失。 自动类型转换
  • 可以将整型常量直接赋给byte、short、char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围即可。
int a = 324;
long b = a;
double d = b;
//a = b;  //报错,long类型不能转int
//long e = 3.24; //报错,double类型不能转long
//long e = 3.24F;  //报错,float类型不能转long
float f = 234234L;  //不报错,long类型可以转float

//特例
byte b2 = 123;  //不报错
byte b2 = 1230;  //报错,1230超过byte的表数范围

11.强制类型转换

注:可能会损失精度。

double x = 3.14;
int nx = (int)x;
System.out.println(nx)  //3,自动舍去小数部分

char c = 'a';
int d = c+1;
System.out.println(d);  //98
System.out.println((char)d);  //b

12.类型转换时的常见问题

  • 操作比较大的数时,要留意是否溢出;
  • 不要命名名字为l的变量,l容易与1混淆,long类型使用大写L,不要用小写。
int money = 1000000000;  //10亿
int years = 20;

int total = money*years;
System.out.println(total);  //-1474836480,超过int范围,发生了溢出

long total1 = money*years;
System.out.println(taotal1);  //-1474836480,默认是int,再转为long,但已超过int范围,发生了溢出

long total2 = money*((long)years);
System.out.println(total2);  //2000000000,正确

long total3 = 34L*54346*money;
System.out,println(total3);  //正确

13.使用Scanner获取键盘输入

import java.util.Scanner;

Scanner scanner = new Scanner(System.in);
System.out.println("请输入名字:");
String name = scanner.nextLine();
System.out.println("请输入你的爱好:");
String favor = scanner.nextLine();
System.out.println("请输入你的年龄:");
String age = scanner.nextInt();

System.out.println("######################");
System.out.println(name);
System.out.println(favor);
System.out.println("来到地球的天数:"+age*365);
System.out.println("离开地球的天数:"+(72-age)*365);

相关文章

  • python基础(四)----运算符

    一.算术运算符(基本同Java) 二.比较运算符(基本同Java) 三.赋值运算符(基本同Java) 四.位运算符...

  • Kotlin——运算符和表达式

    与Java相同的运算符 Kotlin完全支持Java的运算符 Kotlin不支持Java的三目运算符——Kotli...

  • Java基础知识3

    Java基础知识3 运算符 Java语言支持如下运算符 算术运算符:+,-,*,/,%模,取余数,++,-- 赋值...

  • java基础知识

    title: java基础知识tags: [java基础知识] 位运算符 java种的运算符有 “&”,“|”,“...

  • Java &、&&、|、||、^、<

    Java运算符大致分为逻辑运算符(&&,||,!)、算数运算符(+, -, *, / ,+=)、位运算符(^,|,...

  • Java各种&、&&、|、||、^、<<、>>、~、>>>等运算

    Java运算符大致分为逻辑运算符(&&,||,!)、算数运算符(+, -, *, / ,+=)、位运算符(^,|,...

  • 操作多种运算符

    java运算符包括据哦算术运算符(+ - * /)、比较运算符(> < >= <= ==)、赋值运算符(= += ...

  • Java语言入门2

    Java语言中的运算符 算数运算符:+,-,*,/,%,++,-- 关系运算符:>,<,>=,<=,==,!= 布...

  • 日常记忆之Java运算符

    Java运算符 我们可以把运算符分成以下几组: 算术运算符+-*/,%,++,-- 关系运算符==,!=,>,<,...

  • Java的运算符

    Java有4大类运算符:算术运算、位运算、关系运算和逻辑运算。 运算符的优先级 模运算符 Java中,模运算符不止...

网友评论

      本文标题:Java运算符

      本文链接:https://www.haomeiwen.com/subject/tibxyhtx.html