今日内容:

1. 算数运算符

2. 赋值运算符

3. 关系运算符

4. 逻辑运算符

5. 位运算符

6.三目运算符

一 运算符


运算:对常量和变量进行操作的过程称为运算

运算符:对常量和变量进行操作的符号称为运算符

操作数:参与运算的数据称为操作数

1. 算数运算符

1.1. 加减乘除运算

1.1.1  加减乘除运算

+:   正号;加法运算;字符串的连接

—: 负号;减法运算

* :  乘法

/  :  除法运算,取商

%:取余

注意事项:

  整数和整数相运算得到的还是整数,运算时从左往后,先算乘除后加减,有括号先算括号

案例:

 1 class MathOperatorDemo{
2 public static void main(String[] args){
3 int a = 13;
4 int b = 2;
5 System.out.println(a+b); // 15
6 System.out.println(a-b); // 11
7 System.out.println(a*b); // 26
8 System.out.println(a/b); // 6,两个int相运算,得到的结果还是int
9 System.out.println(a%b); // 1
10 }
11 }

若想a/b等于6.5,则第8行代码改为如下两行之一:

System.out.println(1.0*a/b) //7.5
System.out.println((double)a/b) //7.5 , 若将a/b用括号括起来,则结果为7.0

1.2 加加和减减的运算

(1)++前加加,放在变量的前面;后加加,放在变量的后面(只能操作变量)

单独使用的时候,二者相同,就是做了一个加1的操作

 参与运算时又区别:

      前加加:先加1,后运算(包括赋值,打印语句,小括号)

      后加加:先运算,后加1

案例:

class MathOperatorDemo2{
public static void main(String[] args){
int a = 10;
int b = 10;
System.out.println(a++); //10 后加加,先运算(打印)后加1,打印完后a=11
System.out.println(++b); //11 前加加,先加1,后运算
}
}

若在打印前,加上a++;b++;则两个打印的结果都为11

(2)练习

/*
1:基本小题目
int a = 10;
int b = 10;
int c = 10;
a = b++;c=--a;b = ++a;a=c--;
请分别计算出a,b,c的值
**/ class MathOperatorTest{
public static void main(String[] args){
int a = 10;
int b = 10;
int c = 10;
a = b++; //a=10,b=11 后加加,先赋值a=10,赋值后b加1变成了11,后面同理
c = --a; //c=9,a=9
b = ++a; //b=10,a=10
a = c--; //a=9,c=8
System.out.println(a); //9
System.out.println(b); //10
System.out.println(c); //8 }
}

稍微复杂点的题目

int a = 4;
int b = (a++)+(++a)+(a*10);// 70  

注意:括号也要看成一种运算

(a++) 后加加, 先运算,先算小括号,小括号的值4,后加1, a 变成了5

(++a) 前加加,先加1 ,a 变成了6, 小括号的值变成了6

4+6+60 = 70

2. 赋值运算符

符号:=,+=,-=,*=,/=,%=

=为基本的赋值运算符,其他的为扩展的赋值运算符

注意:+=,-=,*=,/=,%= 等符号中包含了一个强制类型转换

如下代码(为面试题)

short s = 1;
s = s + 1; // 错误,右边预算完数值类型为int,但左边的s为short类型,int范围大于short,所以会报错
s += 1; // 等价于 s = (short)(s+1),所以不会报错

案例

class GiveValueOperatorDemo{
public static void main(String[] args){
int a = 13;
int b = 2;
System.out.println(a+=b); //15 a = a+b=15
System.out.println(a-=b); //13 a = a-b=13
System.out.println(a*=b); //26 a=26
System.out.println(a/=b); //13
System.out.println(a%=b); //1
System.out.println(a=b); //2 a=2
System.out.println(a==b); //true
}
}

3. 关系运算符

关系运算符(也叫比较运算符),特点是返回的结果都是布尔类型的值,要么是true,要么是false

== :连接基本数据类型,比较数值是否相等;连接引用数据类型,比较的是地址值

!= : 不等于

> ;<;>=;<=;

instanceof:   判断对象是否属于类  "hello" instanceof String  =====> true   此关系运算符只能用于引用数据类型

案列

class RelationOperatorDemo{
public static void main(String[]args){
int a = 15;
int b = 2;
System.out.println(a=b);//2
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
System.out.println(a<=b);//true
System.out.println("jh " instanceof String);//true
}
}

4. 逻辑运算符

4.1 基本规则

逻辑运算符通常用来连接布尔类型的值

(1)& : AND(并且)      两个都是true 结果才是true              false&true = false

(2)| :OR(或者) 只要有一个是true,那么结果就是true       false|true = true

(3)^ :   XOR(异或) 不同为true, 相同为false                       true^true=false

(4)! 非: (取反)    !true = false

优先级: & 先于    先于   |

6>x>3 在java 中不能这么写, 要写成x>3 & x<6

案例

class LogicOperatorDemo{
public static void main(String[] args){
System.out.println((4>3)&(2!=1)); // true: true&true
System.out.println((4>3)^(2==1));// true true^false
System.out.println((4<3)|(2!=1));//true false|true
System.out.println((4>=3)^(2!=1)&(2!=1));//false true^true&true
System.out.println(!(2!=1));//false
}
}

4.2 短路运算

(1)

&: 两个都是true, 结果就为true,不管前面运算的结果是什么,后面的表达式都进行运算

&&: 在连接两个布尔类型的表达式的时候,如果&& 前面的表达式的结果为false,那么其实已经可以确认整个表达式的结果就是false,短路运算符,后面就不在进行运算了

& 和&& 最终运算出来的结果是一致的

(2)

|: 只要有一个是true,结果就是true,不管前面表达式的结果如何,后面都进行运算

||: 短路或者. 如果前面的表达式结果为true,那么整个表达式的结果就为true,后面就不在运算了

案例

class LogicOperatorDemo2{
public static void main(String[] args){
int x = 3;
int y = 4;
System.out.println((x++ > 3) & (y++ > 4)); //false,&后面的代码也执行了,从后面打印显示的y值可以知道
System.out.println(x);//4
System.out.println(y);//5
}
}

若代码变成如下(注释为运行结果),则

System.out.println((x++ > 3) && (y++ > 4));//false,由结果可知,&&后面的代码没有运行
System.out.println(x);//4
System.out.println(y);//4

同理符号“ | ”  也一样

4.3 连接数字

&|^ 除了可以连接布尔类型外,还可以用来连接整数,短路运算符不能连接数字. 在连接数字的时候,是针对二进制进行运算的, 将连接的数字转成二进制的补码,逐位进行运算, 把0 当做false ,把1 当做true
"~"  也是一个运算符,是把数字转成二进制的补码后逐位(包括符号位)取反

练习题:

a = 15, b=2 求a&b,a|b,a^b,~2

class LogicOperatorDemo3{
public static void main(String[] args){
int a = 15;
int b = 2;
System.out.println(a&b); //2
System.out.println(a|b); //15
System.out.println(a^b); //13
System.out.println(~b); // -3
}
}

解释如下

5 . 位运算符

针对二进制的补码做移位的操作
<<: 最高位丢弃,空位补0
>>: 空位补最高位
>>>: 无符号右移, 最高位补0

规律:
左移几位就相当于乘以2 的几次方
右移几位就相当于除以2 的几次方

案例

class BitOperatorDemo{
public static void main(String[] args){
System.out.println(15>>2);// 3
System.out.println(15<<2);// 60
}
}

6. 三目运算符

也称之为三元运算符
格式:
(关系表达式)?表达式1:表达式2;
 如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
 表达式1 和表达式2 的最终结果是一个明确的值(不能写输出语句)

练习

/**
1. 定义两个float 类型的变量, 返回最小值
2. 定义一个int 类型的变量,如果这个数是偶数,就返回true, 否则返回false
3. 定义两个long 类型变量,如果这两个数相等,就返回"相等",否则返回不相等
4. 定义三个double 类型的变量,求出这三个数中的最大值
*/
class ThreeEyesTest{
public static void main(String[] args){
//1
float f1 = 12.3F;
float f2 = 56;
float min = f1<f2?f1:f2;
System.out.println(min);//12.3
System.out.println(f1<f2?f1:f2);
//2
int a = 100;
boolean bo = a%2==0?true:false;
boolean bo1 = a%2==0;
System.out.println(bo);//true
//3
long b1 = 100;
long b2 = 200L;
String result = b1==b2?"相等":"不相等";
System.out.println(result);//不相等
//4
double d1 = 12.3;
double d2 = 45;
double d3 = 89.3;
double temp = d1>d2?d1:d2;// 求前两个数中的最大值
double max = temp >d3?temp:d3;// 再用前两个数中的最大值和第三个数比较,
System.out.println(max);
System.out.println(d1>d2?(d1>d3?d1:d3):(d2>d3?d2:d3));
System.out.println(d1>d2&d1>d3?d1:d2>d3?d2:d3); //如果d1 大于d2 并且d1>d3,最大值就是d1,否则d1 不是最大值,最大值就在d2 和d3 中

嵌套练习

需求:
利用条件运算符的嵌套来完成此题:
学习成绩>=90 分的同学用A 表示,
80-89 分之间的用B 表示,
70-79 分以下的用C 表示,
60-69 分以下的用D 表示,
60 以下用E。

class StudentScoreSystem{
public static void main(String[] args){
int score = 69;
String result = score>=90?"A":score>=80?"B":score>=70?"C":score>=60?"D":"E";
System.out.println(result);
}
}

二 . 键盘录入

1. 导包: import 全类名(包名+类名)这句话要放到class 的上面

如: import java.util.Scanner

2. 创建Scanner 的对象
    Scanner 对象名(变量名) = new Scanner(System.in);

3. 使用对象获取键盘录入的信息:
    对象名.nextInt();             获得 int
    对象名.nextDouble()              double
    ....
    没有nextChar 这个方法
    对象名.nextLine();          获取字符串的

注意事项: 如果一个程序中,即使用了nextInt(nextDouble.nextLong....) ,同时还使用了nextLine

如果把nextLine 放到了nextInt(nextDouble.nextLong....) 的下面,就会导致nextLine 还未接收到内容就结束了
解决方案:

1. 把nextLine 放到nextInt(nextDouble.nextLong....) 上面
2. 可以使用next 替换nextLine

import java.util.Scanner;
class ScannerDemo{
public static void main(String[] args){
//2. 创建对象
Scanner sc = new Scanner(System.in);
//3 使用对象获取键盘录入的信息
System.out.println("请输入您的年龄");
int age = sc.nextInt();//如果输入的类型不是int,java.util.InputMismatchException
System.out.println("请输入您的姓名");
String name = sc.next();
System.out.println("您好,"+name+",原来您的年龄是:"+age+",您好年轻啊");
}
}

三 eclipse的使用

零基础学习java------day3-运算符 以及eclipse的使用的更多相关文章

  1. 音乐出身的妹纸,零基础学习JAVA靠谱么

    问:表示音乐出身的妹纸一枚  某一天突然觉得身边认识的是一群程序员   突然想 要不要也去试试... 众好友都觉得我该去做个老师,可是我怕我会误人子弟,祸害祖国下一代..... 要不要 要不要 学Ja ...

  2. 总结了零基础学习Java编程语言的几个基础知识要点

    很多Java编程初学者在刚接触Java语言程序的时候,不知道该学习掌握哪些必要的基础知识.本文总结了零基础学习Java编程语言的几个基础知识要点. 1先了解什么是Java的四个方面   初学者先弄清这 ...

  3. 零基础学Java第二节(运算符、输入、选择流程控制)

    本篇文章是<零基础学Java>专栏的第二篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 第一章 运算符 1.1 算术运算符的概述和用法 运算符 对常量和变 ...

  4. 零基础学习Hadoop

    零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了.整个过程整理一下,给大家参考,欢迎讨论,共同学习. ...

  5. 零基础学习hadoop到上手工作线路指导(编程篇)

    问题导读: 1.hadoop编程需要哪些基础? 2.hadoop编程需要注意哪些问题? 3.如何创建mapreduce程序及其包含几部分? 4.如何远程连接eclipse,可能会遇到什么问题? 5.如 ...

  6. 零基础学习hadoop到上手工作线路指导(中级篇)

    此篇是在零基础学习hadoop到上手工作线路指导(初级篇)的基础,一个继续总结. 五一假期:在写点内容,也算是总结.上面我们会了基本的编程,我们需要对hadoop有一个更深的理解: hadoop分为h ...

  7. 零基础学习hadoop到上手工作线路指导(初级篇)

    零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了.整个过程整理一下,给大家参考,欢迎讨论,共同学习. ...

  8. [原]零基础学习SDL开发之在Android使用SDL2.0显示BMP图

    关于如何移植SDL2.0到安卓上面来参考我的上一篇文章:[原]零基础学习SDL开发之移植SDL2.0到Android 在一篇文章我们主要使用SDL2.0来加载一张BMP图来渲染显示. 博主的开发环境: ...

  9. [学习线路] 零基础学习hadoop到上手工作线路指导(初级篇)

    about云课程最新课程Cloudera课程   零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了. ...

  10. 零基础学习hadoop到上手工作线路指导初级篇:hive及mapreduce

      此篇是在零基础学习hadoop到上手工作线路指导(初级篇)的基础,一个继续总结.五一假期:在写点内容,也算是总结.上面我们会了基本的编程,我们需要对hadoop有一个更深的理解:hadoop分为h ...

随机推荐

  1. Python matplotlib 概率论与数理统计 伯努利分布 二项分布

    Python 代码实现 二项分布 import numpy as np import matplotlib.pyplot as plt import math from scipy import st ...

  2. httprunner3源码解读(3)client.py

    源码目录结构 ApiResponse 这个类没啥好说的 class ApiResponse(Response): """ 继承了requests模块中的Response类 ...

  3. 修改记事本PE结构弹计算器Shellcode

    目录 修改记事本PE结构弹计算器Shellcode 0x00 前言 0x01 添加新节 修改节数量 节表位置 添加新节表信息 0x02 添加弹计算器Shellcode 修改代码 0x03 修改入口点 ...

  4. 简单理解函数声明(以signal函数为例)

    这两天遇到一些声明比较复杂的函数,比如signal函数,那我们先简单说说signal函数的用法:(参考<c陷阱与缺陷>) [signal:几乎所有c语言程序的实现过程中都要用到signal ...

  5. SpringCloud 2020.0.4 系列之 Sleuth + Zipkin

    1. 概述 老话说的好:安全不能带来财富,但盲目的冒险也是不可取的,大胆筹划,小心实施才是上策. 言归正传,微服务的特点就是服务多,服务间的互相调用也很复杂,就像一张关系网,因此为了更好的定位故障和优 ...

  6. 通俗易懂的HTML全知识梳理笔记(第一部分)

    文章目录 什么是HTML 块级元素和内联元素 属性 给`a`元素添加属性 布尔属性 HTML的空白 实体引用: 在HTML中包含特殊字符 head中的元数据 meta元素 在你的站点中增加自定义的图标 ...

  7. 大一C语言学习笔记(1)---编译顺序问题;不同数据类型赋值,运算问题;算数运算符易错点(以解一元二次方程为例)

    废话少说,上代码: #include<stdio.h> #include<math.h> int main()//解一元二次方程 { int a,b,c; double too ...

  8. 查看python是32位,还是64位

    步骤:cmd打开命令行,输入python,查看. 如果32bit,则是32位:如果是64,则是64位 如果需要安装客户端进行orcale数据库操作,则要保证python\

  9. 从华为新发布的WeAutomate 3.0,看RPA如何在政企领域落地生长

    文/王吉伟 11月11日,是电商的重要节日.即便今年双11的气氛不如往年浓烈,人们依旧关注双11厂商战报,关注购物车里的商品有没有降价. 当然在RPA领域,大家除了关注双11的商品价格,更关注华为RP ...

  10. vue项目在打包时,去掉所有的console.log输出

    npm i babel-plugin-transform-remove-console -S const proPlugins = [];// 开发环境 不做操作 // 生产环境,去掉console ...