Java学习 (八)基础篇 运算符
运算符
基本运算符
Java 语言支持如下运算符
| 算术运算符 | +,-,*,/,%,++,-- |
|---|---|
| 赋值运算符 | = |
| 关系运算符 | >,<,>=,<=,==,!= |
| ‘逻辑运算符 | &&,||,! |
| 位运算符 | &,^,~,>>,<<,>>> |
| 条件运算符 | ?、: |
| 扩展赋值运算符 | +=,-=,*=,/= |
1.一元基础运算(重点)
一元运算符 (a++ / ++a) (a-- / --a)
int a1 = 3;
int b1 = a1++;
/*
b1 = a1 先赋值 3=3 此时a1=3,b1=3
a1 = a1+1 后自增 3+1=4 此时a1=4
*/
System.out.println(a1);//4
int c1 = ++a1;
/*
a1 = a1+1 先自增 此时a1=4+1=5
a1 = c1 后赋值 此时c1=a1=5
*/
//a++是先赋值给了b再a自增1,所以b只是3,而++a是先自增再赋值给c,所以c是变成了5
System.out.println(a1); //5
System.out.println(b1); //3
System.out.println(c1); //5
2.二元基础运算
基础
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println(a+b);//30
System.out.println(a-b);//-10
System.out.println(a*b);//200
System.out.println(a/b);// 0 (/)计算结果取小数部分的整数,在字符面前添加类型即可
System.out.println(a/(double)b);//0.5
计算返回值类型
long e = 121212121212L;
int f = 123;
short g = 10;
byte h = 8;
//运算结果的数据类型为参与运算的变量中最高优先级的数据类型
System.out.println(e+f+g+h);//121212121353(long)
System.out.println(f+g+h); //141(int)
System.out.println(g+h); //18(int)
关系运算
//关系运算符返回的结果(布尔值)
int i = 10;
int j = 20;
int k = 21;
System.out.println(a>b); //false
System.out.println(a<b); //true
System.out.println(a==b); //false
System.out.println(a!=b); //true
//模运算(取余)
System.out.println(k%j); //1
幂运算
//很多运算,我们会使用一些工具类来使用
double pow1 = Math.pow(2,3);
double pow2 = Math.pow(3,2);
System.out.println(pow1); //8
System.out.println(pow2); //9
3.三元运算符
/*
x ? y : z
如果 x==true,则结果为y,否则结果为z
*/
//int score = 80;
int score = 50;
String type = score <60 ?"不及格":"及格";
System.out.println(type);//及格
4.逻辑运算符
与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:"+ (a && b));//逻辑与运算,两个变量都为真,结果才为true
System.out.println("a || b:"+ (a || b));//逻辑或运算,两个变量有一个为真,结果才为true
System.out.println("a && b:"+ !(a || b)); //如果是真则为假,如果是假则为真
//短路运算 :(&&)中当前一变量为假,则不会执行后一变量,直接输出
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d); //false
System.out.println(c); //5
位运算
/*
A = 0011 1100
B = 0000 1101
-------------------------------------
A&B 0000 1100
A|B 0011 1101
A^B 0011 0001
~B 1111 0010
*/
/*
2*8 = 16 计算机没有此编码方式
2*2*2*2 = 16 效率低下
<<(左移 乘) >>(右移 除)
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
...
*/
System.out.println(2<<3);//2乘以3个2 16
System.out.println(16>>3);//16除以3个2 2
5.扩展赋值运算符
int a = 10;
int b = 20;
a += b;
//a -= b;
System.out.println(a); //30
//字符串连接符 + , String
System.out.println(a+b); //50
System.out.println(""+a+b); //3020
//如果前方出现字符串类型,则之后的操作都为字符串类型
System.out.println(a+b+""); //50
//如果字符串在操作后面,则会先进行运算,后拼接
Java学习 (八)基础篇 运算符的更多相关文章
- Java学习日记基础篇(八) —— 二进制、位运算、位移运算
二进制 二进制是逢2进位的进位置,0,1是基本算符 原码反码补码 在基本数据类型那里,有详细解释 二进制的最高位数是符号位:0表示整数,1表示负数 正数的原码,反码,补码都一样 负数的反码 = 它的原 ...
- java学习笔记-基础篇
Java基础篇 1—12 常识 13 this关键字 14参数传递 16 继承 17 访问权限 28—31异常 1—12 常识 1.文件夹以列表展示,显示扩展名,在地址栏显示全路径 2.javac编译 ...
- Java学习日记——基础篇(三-上)基本语法之运算符和流程控制
运算符 算术运算符 听其名而知其意,就是用于计算的,java中常用的是: + 加 - 减 * 乘 / 除 % 取模,取余——%可以用来得到两个数相除的余数 小练习——写一个ja ...
- Java学习路线-基础篇!
下面以黑马程序员Java学院的学习路线为例,进行一次史无前例的剖析,我会采取连载的形式,细致的讲解零基础的人怎么学习Java.先看下Java在基础阶段的知识点路线图. 内容多吗?不要被吓到了,知识点剖 ...
- Java学习日记基础篇(六)—— 抽象类、接口、final
抽象类 为什么要有抽象类? 因为父类方法有不确定性,我们在Animal中定义了一个方法,但是它会被子类的方法覆盖掉,我们就不知道这个方法原本是做什么的 public class test1 { pub ...
- Java学习日记——基础篇(二)基本语法
变量 变量和常量是程序处理的两种基本数据对象,变量是程序的基本组成单位 变量的目的就是确定目标并提供存放空间 public class Hello { public static void main( ...
- Java学习笔记——基础篇
Tips1:eclipse中会经常用到System.out.println方法,可以先输入syso,然后eclipse就会自动联想出这个语句了!! 学习笔记: *包.权限控制 1.包(package) ...
- java学习笔记(基础篇)—java数组
一:什么是数组,什么时候使用数组? 数组是用来保存一组数据类型相同的元素的有序集合,数组中的每个数据称为元素.有序集合可以按照顺序或者下标取数组中的元素. 在Java中,数组也是Java对象.数组中的 ...
- java学习笔记(基础篇)—面向对象编程之封装、继承、多态
一. OOP中的基本概念 Java的编程语言是面向对象的,采用这种语言进行编程称为面向对象编程(Object-Oriented Programming, OOP), 它允许设计者将面向对象设计实现为一 ...
随机推荐
- How to fetch data with React Hooks
Where can I make API call with hooks in react? Async useEffect is pretty much unreadable How to fetc ...
- vs.net调试ArcGIS Engine代码查看变量时,提示“要检查本机对象,请启用本机代码调试。” 的解决方法
用vs2017 调试 查看ArcGIS Engine 的变量时 会提示如下图所示的错误: 解决方法: 工具->选项->调试->常规->使用托管的兼容模式 如下图所示: 2.设置 ...
- Three.js 打造缤纷夏日3D梦中情岛 🌊
声明:本文涉及图文和模型素材仅用于个人学习.研究和欣赏,请勿二次修改.非法传播.转载.出版.商用.及进行其他获利行为. 背景 深居内陆的人们,大概每个人都有过大海之梦吧.夏日傍晚在沙滩漫步奔跑:或是在 ...
- 深度学习与CV教程(4) | 神经网络与反向传播
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...
- JNPF移动办公解决方案
市场背景 随着办公自动化系统的普及,电子化.数据化的办公方式已进入越来越多的企业和政府单位,信息化的办公系统在企事业内部编织起一套高效.畅通的信息互联体系,极大推动了企事业单位生产力的发展.但与此同时 ...
- 功耗优化之Sensor功耗分析
功耗优化之Sensor功耗分析 一.Sensor功耗问题分类 二.Sensor功耗问题分析方法 SSC子系统引起系统无法进入AOSD问题分析: SSC子系统频繁唤醒AP问题分析方法 SSC子系统的GP ...
- 硬件开发笔记(四):硬件开发基本流程,制作一个USB转RS232的模块(三):设计原理图
前者 前面建立好的基础的元器件,下面开始设计原理图. 需求 USB转RS232,输出RS232 可以选择性输出5V的TTL 可以选择性输出3.3V的TTL 设计原理图 步骤一:CH340G ...
- React简单教程-3.1-样式之使用 tailwindcss
前言 本文是作为一个额外内容,主要介绍 tailwindcss 的用法 tailwindcss 是一个功能类优先的 CSS 框架,我在以前的文章里有描述为什么使用功能类优先:为什么我在 css 里使用 ...
- 论文阅读 dyngraph2vec: Capturing Network Dynamics using Dynamic Graph Representation Learning
6 dyngraph2vec: Capturing Network Dynamics using Dynamic Graph Representation Learning207 link:https ...
- 高性能 Jsonpath 框架,Snack3 3.2.29 发布
Snack3,一个高性能的 JsonPath 框架 借鉴了 Javascript 所有变量由 var 申明,及 Xml dom 一切都是 Node 的设计.其下一切数据都以ONode表示,ONode也 ...