前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java基础学习——运算符

Java基础学习——运算符

原创
作者头像
Alita
发布2022-07-30 20:59:12
2320
发布2022-07-30 20:59:12
举报
文章被收录于专栏:JAVA初学笔记

JAVA学习笔记1—运算符

前言

运算符是对字面量或者变量进行操作的符号,在本文中会介绍算术运算符、自增自减运算符、赋值运算符、关系运算符、关系运算符、逻辑运算符和三元运算符六种运算符。(本文作者在CSDN上有一样的文章,故照片带水印)

算术运算符

算术运算符一共有五种:加减乘除以及取余

符号

作用

加法运算

减法运算

乘法运算

/

除法运算

%

取余、取模运算

加法运算

在Java中,加法运算一共有三类:数字间的加法运算、字符串间的加法运算以及字符间的加法运算

数字相加

简单的小学运算,不多加介绍,要注意的就是不同数据类型相加,详见“数据类型转换”

字符串相加

当数字、字母、文字加上双引号以后就变成了字符串,此时数字间就不进行数据相加了

代码语言:java
复制
public class Test {
    public static void main(String[] args) {
        System.out.println("1"+"23");
    }
}
在这里插入图片描述
在这里插入图片描述

需要特别注意的是,在字符串后面的 数字 默认都是字符串,即使不加双引号也按照字符串相加来进行运算

代码语言:java
复制
public class Test {
    public static void main(String[] args) {
        System.out.println("12"+"答案"+1+2);
    }
}
在这里插入图片描述
在这里插入图片描述

变量名如果加双引号也被当做是一个字符串来运算,并不会进行赋值运算

代码语言:java
复制
public class 测试 {
    public static void main(String[] args) {
        int date = 2;
        System.out.println("今天是" + "date"+"号");
    }
}
在这里插入图片描述
在这里插入图片描述
字符相加

当字符+字符/字符+数字时,会将字符转换为它对应的ASCII码再相加,需要特别记忆的两个ASCII码如下

'A':65

'a':97

用IDEA来测试一下

代码语言:java
复制
public class Test {
    public static void main(String[] args) {
        System.out.println('a' + 1);
    }
}
在这里插入图片描述
在这里插入图片描述

除法运算

当两个整数相除时,结果不含小数;只要有一个数是浮点型,结果就是浮点型,但是其精度会有所损失

代码语言:java
复制
public class Test {
    public static void main(String[] args) {
        System.out.println(10 / 3);
    }
}
result
result
代码语言:java
复制
public class Test {
    public static void main(String[] args) {
        System.out.println(10.0 / 3);
    }
}
result
result

取余/取模运算

做除法运算后,取余数;同样地,只要有一个数是浮点型,结果就是浮点型

代码语言:java
复制
public class Test {
    public static void main(String[] args) {
    System.out.println(10 % 3);
    }
}
在这里插入图片描述
在这里插入图片描述
代码语言:java
复制
public class Test {
    public static void main(String[] args) {
    System.out.println(10.0 % 3);
    }
}
在这里插入图片描述
在这里插入图片描述

取余/取模可以应用在判断是否整除的场景中

列如:a % b = 0 代表a是b的整数倍(a、b都不为0) 当a = 0 时,b为除0以外任何数,a % b = 0数据类型的转换

在运算时,不同数据类型之间无法进行运算,需要将数据类型转化为同一种数据类型才能进行运算。而数据类型的转换也分为隐式转换(自动转换)和强制类型转换,要想知道何时需要我们强制转换数据类型,必须首先知道数据类型的种类

如下图所示是取值范围由小到大排列的数据类型

数据类型

取值范围

byte

-128~127

short

-2的15次方~2的15次方-1

int

-2的31次方~2的31次方-1

long

-2的63次方~2的63次方-1

float

3.402823e+38 ~ 1.401298e-45

double

1.797693e+308~ 4.9000000e-324

需要注意的是:不同类型的数值(int及以上的数据类型)在运算时,需要将取值范围小的强制转换成取值范围大的数据类型再进行运算

隐式转换(自动类型提升)

当数据类型是byte、short、char时,在运算过程中将自动转换成int型进行运算,故要注意不同类型的取值范围,否则程序会报错,显示数值溢出

字符型(char)在运算时会自动将字符转化成ASCII码进行运算

强制类型转换

当将取值范围大的变量赋值给取值范围小的变量时,就需要强制类型转换

格式:目标数据类型 变量名 = (目标数据类型)被强制转换的数据

例如:

double num = 6.6;

int x = (int) num;

System.out.println(num);

输出结果为:6

自增、自减运算符

自增

自增有两种:前加加(++i)、后加加(i++),在单独运算时两者并无区别,都是将i的值增加1,即:i = i+1 ;但是在参与运算以后就会有明显区别。在参与运算后,++i 先自增后赋值,i++则是先赋值再自增。

下面,用IDEA来实现一下两者的区别

代码语言:java
复制
/*/ 后加加/*/
public class Test {
    public static void main(String[] args) {
     int i = 1;
     int a = i++;
        System.out.println("a的值是:"+ a);
        System.out.println("i的值是:"+ i);
    }
}
在这里插入图片描述
在这里插入图片描述
代码语言:java
复制
/*/ 前加加/*/
public class Test {
    public static void main(String[] args) {
     int i = 1;
     int a = ++i;
        System.out.println("a的值是:"+ a);
        System.out.println("i的值是:"+ i);
    }
}
在这里插入图片描述
在这里插入图片描述

自减

同自增,这里直接用IDEA实现二者区别

代码语言:java
复制
/*/ 后减减/*/
public class Test {
    public static void main(String[] args) {
     int i = 1;
     int a = i--;
        System.out.println("a的值是:"+ a);
        System.out.println("i的值是:"+ i);
    }
}
在这里插入图片描述
在这里插入图片描述
代码语言:java
复制
/*/ 前减减/*/
public class Test {
    public static void main(String[] args) {
     int i = 1;
     int a = --i;
        System.out.println("a的值是:"+ a);
        System.out.println("i的值是:"+ i);
    }
}
在这里插入图片描述
在这里插入图片描述

赋值运算符

赋值运算符主要有六种,如下图所示;且扩展的赋值运算符都隐含了强制类型转换

符号

作用

=

赋值

+=

加后赋值,i+=a→i=i+a

-=

减后赋值,i-=a→i=i-a

*=

乘后赋值 ,i=a→i=ia

/=

除后赋值 ,i/=a→i=i/a

%=

取余后赋值,i%=a→i=i%a

关系运算符

关系运算符只有两种结果:True(成立)/False(不成立),他们都是布尔型(boolean)

符号

作用

==

判断是否相等

!=

判断是否不相等

=

判断是否大于等与

<=

判断是否小于等与

判断是否大于

<

判断是否小于

逻辑运算符

逻辑运算符包含四种逻辑运算符和两种短路运算符

四种逻辑运算符

在这里插入图片描述
在这里插入图片描述

(图源自黑马程序员)

两种短路运算符

短路运算符结果与逻辑运算符相同,但是短路运算符在知道左式结果的情况下就能知道整个式子的结果,这样大大增加了程序运行的效率,所以在编写程序时更偏重于运用短路运算符

在这里插入图片描述
在这里插入图片描述

(图源自黑马程序员)

这里直接通过IDEA实现短路运算符的特点

代码语言:java
复制
/*/短路或/*/
public class Test {
    public static void main(String[] args) {
    boolean result;
    int a = 5;
    int i = 1;
    result = (a++ > 2) || (++i < 5);
        System.out.println("a的值是:" +a);
        System.out.println("i的值是:"+ i);
    }
}
在这里插入图片描述
在这里插入图片描述

从这个程序中我们可以看出++i这个语句并没有执行,而是直接打印输出

(如果执行了++i的话,i的值应该是2而不是1,因为++i是先自增再赋值)

其原理是: a||b 在a为true的情况,不论b是true/false,其结果一定是true,所以不用执行符号右边的语句

代码语言:java
复制
/*/短路与/*/
public class Test {
    public static void main(String[] args) {
    boolean result;
    int a = 5;
    int i = 1;
    result = (a++ < 2) && (++i < 5);
        System.out.println("a的值是:"+a);
        System.out.println("i的值是:"+i);
    }
}
在这里插入图片描述
在这里插入图片描述

从这个程序中我们可以看出++i这个语句并没有执行,而是直接打印输出

(如果执行了++i的话,i的值应该是2而不是1,因为++i是先自增再赋值)

其原理是: a&&b 在a为false的情况,不论b是true/false,其结果一定是false,所以不用执行符号右边的语句

三元运算符

格式:表达式 ? 表达式1 : 表达式2

文字不太好解释三元运算符,这里直接上代码

代码语言:java
复制
public class 测试 {
    public static void main(String[] args) {
    boolean result;
    int a = 1;
    int b = 2;
        System.out.println(a > b ? "a大于b" : "a小于b");
    }
}
在这里插入图片描述
在这里插入图片描述

解释一下上面的程序:

判断a是否大于b,如果是,则输出"a大于b",如果不是,则输出"a小于b"

因此,表达式 ? 表达式1 : 表达式2 可以这么理解:

判断表达式是否成立(true or false?),如果成立(true)则输出表达式1,如果不成立(false)则输出表达式2

结语

运算符也是有优先级的,最最重要的是小括号优先,所以写程序时擅用小括号可以使得代码更加简洁明了,在下一篇文章中会有一些具体的基础练习题,难度适合初学者,如果是自学者也可以检验一下自己的学习成果。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JAVA学习笔记1—运算符
    • 前言
      • 算术运算符
        • 加法运算
        • 除法运算
        • 取余/取模运算
      • 自增、自减运算符
        • 自增
        • 自减
      • 赋值运算符
        • 关系运算符
          • 逻辑运算符
            • 四种逻辑运算符
            • 两种短路运算符
          • 三元运算符
            • 结语
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档