Java运算符和引用数据类型(Scanner、Random)
运算符
算术运算符:
|
运算符 |
运算规则 |
范例 |
结果 |
|
+ |
正号 |
+3 |
3 |
|
+ |
加 |
2+3 |
5 |
|
+ |
连接字符串 |
“中”+“国” |
“中国” |
|
- |
负号 |
int a=3;-a |
-3 |
|
- |
减 |
3-1 |
2 |
|
* |
乘 |
2*3 |
6 |
|
/ |
除 |
5/2 |
2 |
|
% |
取模 |
5%2 |
1 |
|
++ |
自增 |
int a=1;a++/++a |
2 |
|
-- |
自减 |
int b=3;a--/--a |
2 |
加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串。
除法“/”当两边为整数时,取整数部分,舍余数。当其中一边为浮点型时,按正常规则相除。
“%”为整除取余符号,小数取余没有意义。结果符号与被取余符号相同。
整数做被除数,0不能做除数,否则报错。
算术运算符++、--的使用
++运算符:会在原来的基础上自增1
--运算符:会在原来的基础上自减1
++、-- 运算符后置时,先使用变量原有的值参与运算,运算操作完成后,变量x的值自增1或者自减1
++、--运算符前置时,先将变量x的值自增1或者自减1,然后使用更新后的新值参与运算操作
赋值运算符
|
运算符 |
运算规则 |
范例 |
结果 |
|
= |
赋值 |
int a=2 |
2 |
|
+= |
加后赋值 |
int a=2,a+=2,(a=a+2) |
4 |
|
-= |
减后赋值 |
int a=2,a-=2 (a=a-2) |
0 |
|
*= |
乘后赋值 |
int a=2,a*=2 (a=a*2) |
4 |
|
/= |
整除后赋值 |
int a=2,a/=2 |
1 |
|
%= |
取模后赋值 |
int a=2,a%=2 |
0 |
比较运算符
比较运算符,又叫关系运算符,它是用来判断两个操作数的大小关系及是否相等关系的,结果是布尔值true或者false。
|
运算符 |
运算规则 |
范例 |
结果 |
|
== |
相等于 |
4==3 |
False |
|
!= |
不等于 |
4!=3 |
True |
|
< |
小于 |
4<3 |
False |
|
> |
大于 |
4>3 |
True |
|
<= |
小于等于 |
4<=3 |
False |
|
>= |
大于等于 |
4>=3 |
True |
赋值运算符的=符号,符号与比较运算符的==符号是有区别的
赋值运算符的=符号,是用来将=符号右边的值,赋值给左边的变量
比较运算符的==符号,是用来判断==符号 左右变量的值是否相等的
逻辑运算符
逻辑运算符,它是用于布尔值进行运算的,运算的最终结果为布尔值true或false
|
运算符 |
运算规则 |
范例 |
结果 |
|
& |
与 |
false&true |
False |
|
| |
或 |
false|true |
True |
|
^ |
异或 |
true^flase |
True |
|
! |
非 |
!true |
Flase |
|
&& |
短路与 |
false&&true |
False |
|
|| |
短路或 |
false||true |
True |
逻辑运算符通常是连接两个其他表达式计算后的布尔值结果
当使用短路与或者短路或时,只要能判断出结果则后面的部分就不在判断
运算符的结果规律:
短路与&&:参与运算的两边数据,只要有false,则运算结果为false
短路或||:参与运算的两边数据,只要有true, 则运算结果为true
逻辑非!:参与运算的两边数据,原先是true则变成false,原先是false则变成true
//&与的运行结果
System.out.println(false&true);//false
System.out.println(true&false);//false
System.out.println(true&true);//true
System.out.println(false&false);//false
//&&短路与的运行结果
System.out.println(false&&true);//false
System.out.println(true&&false);//false
System.out.println(true&&true);//true
System.out.println(false&&false);//false
//例子
int a=1;
int b=1;
System.out.println(1==2&a++ ==1);//false
System.out.println(1==2&&b++ ==1);//false
System.out.println(a);//2
System.out.println(b);//1
注意:
与&和短路与&&的区别
&如果第一个值是false,还会判断第二个值
&&如果第一个值是false,将不会判断第二个值
//|或运行结果
System.out.println(false|true);//true
System.out.println(true|false);//true
System.out.println(true|true);//true
System.out.println(false|false);//false
//||短路或运行结果
System.out.println(false||true);//true
System.out.println(true||false);//true
System.out.println(true||true);//true
System.out.println(false||false);//false
//例子
int c=1;
int d=1;
System.out.println(1==1|c++ ==1);//true
System.out.println(1==1||d++ ==1);//true
System.out.println(c);//2
System.out.println(d);//1
注意:
// 或| 和 短路或||的区别
|如果第一个值为true,还会判断第二个值
||如果第一个值为true,不会判断第二个值
三元运算符
格式:
(条件表达式)?表达式1:表达式2
三元运算符的运算规则:
先判断条件表达式的值,若为true,运算结果为表达式1;若为false,运算结果为表达式2。
例子:
//随机出入三个数,然后输出最大值
import java.util.Scanner;
class Demo05 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数:");
int x=sc.nextInt();
System.out.println("请输入第二个数:");
int y=sc.nextInt();
System.out.println("请输入第三个数:");
int z=sc.nextInt();
int max = (x>y?x:y)>z?(x>y?x:y):z;
System.out.println("最大值为:"+max);
}
}
Max= (x>y?x:y)>z?(x>y?x:y):z;
先判断两边括号里面x,y的值,如果x值大然后在跟z值比大小,若y值大然后y跟z值在比较大小
运算符优先级
每种运算符的优先级,按照运算先后顺序排序(优先级相同的情况下,按照从左到右的顺序依次运算)
|
优先级 |
描述 |
运算符 |
|
1 |
括号 |
()、[] |
|
2 |
正负号 |
+、- |
|
3 |
自增自减,非 |
++、--、! |
|
4 |
乘除,取余 |
*、/、% |
|
5 |
加减 |
+、- |
|
6 |
移位运算 |
<<、>>、>>> |
|
7 |
大小关系 |
>、>=、<、<= |
|
8 |
相等关系 |
==、!= |
|
9 |
按位与 |
& |
|
10 |
按位异或 |
^ |
|
11 |
按位或 |
| |
|
12 |
逻辑与 |
&& |
|
13 |
逻辑或 |
|| |
|
14 |
条件运算 |
?: |
|
15 |
赋值运算 |
=、+=、-=、*=、/=、%= |
|
16 |
位赋值运算 |
&=、|=、<<=、>>=、>>>= |
引用数据类型
Scanner类
Scanner类
Scanner类是引用数据类型的一种,我们可以使用该类来完成用户键盘录入,获取到录入的数据。
Scanner使用步骤:
导包:import java.util.Scanner;
创建对象实例:Scanner sc = new Scanner(System.in);
调用方法:
int i = sc.nextInt(); 用来接收控制台录入的数字
String s = sc.next(); 用来接收控制台录入的字符串
例子:
import java.util.Scanner;
public class ScannerDemo01 {
public static void main(String[] args) {
//创建Scanner引用类型的变量
Scanner sc = new Scanner(System.in);
//获取数字
System.out.println("请输入一个数字");
int n = sc.nextInt();
System.out.println("n的值为" + n);
//获取字符串
System.out.println("请输入一个字符串");
String str = sc.next();
System.out.println("str的值为" + str);
}
}
![]() |
|
运行结果:
随机数类Random
这个Random类,它可以产生多种数据类型的随机数,在这里我们主要介绍生成整数与小数的方式。
public int nextInt(int maxValue) 产生[0,maxValue)范围的随机整数,包含0,不包含maxValue;
public double nextDouble() 产生[0,1)范围的随机小数,包含0.0,不包含1.0。
l Random使用方式:
n import导包:所属包java.util.Random
n 创建实例格式:Random 变量名 = new Random();
接下来,通过一段代码,一起学习下Random类的使用,RandomDemo.java
import java.util.Random;
public class RandomDemo {
public static
void main(String[] args) {
// 创建Random类的实例
Random
r = new Random();
// 得到0-100范围内的随机整数,将产生的随机整数赋值给i变量
int i = r.nextInt(100);
//得到0.0-1.0范围内的随机小数,将产生的随机小数赋值给d变量
double d = r.nextDouble();
System.out.println(i);
System.out.println(d);
}
}
运行结果如下图所示:

Java运算符和引用数据类型(Scanner、Random)的更多相关文章
- Java运算符、引用数据类型、流程控制语句
1运算符 1.1算术运算符 运算符是用来计算数据的符号. 数据可以是常量,也可以是变量. 被运算符操作的数我们称为操作数. 算术运算符最常见的操作就是将操作数参与数学计算: 运算符 运算规则 范例 结 ...
- 引用数据类型 Scanner Random
Scanner类 数据类型 变量名 = new 数据类型(); 每种引用数据类型都有其功能,我们可以调用该类型实例的功能. 变量名.方法名(); Scanner类是引用数据类型的一种,我们可以使 ...
- java基础(4):引用数据类型、流程控制语句
1. 引用数据类型 1.1 Scanner类 我们要学的Scanner类是属于引用数据类型,我们先了解下引用数据类型. 引用数据类型的使用: 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有 ...
- java 方法及引用数据类型
一.方法 在java中,方法就是用来完成解决某件事情或实现某个功能的办法. 1.语法格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,......){ 执行语句 ……… re ...
- Java 运算符(引用和对象)
1. 算数运算符 就是+.-.*./.%.++.--这些,没什么好说的,稍微强调下自加,自减: 前缀自增自减法(++i,--i): 先进行自增或者自减运算,再进行表达式运算. 后缀自增自减法(i++, ...
- Java学习(运算符,引用数据类型)
一. 运 算 符 1.算数运算符 运算符是用来计算数据的符号.数据可以是常量,也可以是变量.被运算符操作的数我们称为操作数. 算术运算符最常见的操作就是将操作数参与数学计算,具体使用看下图 ...
- 引用数据类型 Scanner和 Random
键盘录入Scanner 获取键盘录入的数据,对获取数据的具体操作进行了封装,只需要调用方法,即可得到键盘录入的数据 A:导包 import java.util.Scanner; ...
- java 中的引用数据类型
字符串String 在java 中,字符串不是基本数据类型,而是String 类的对象,当我们创建一个字符串的时候,真的是要使用new 来调用String 构造函数 String str = new ...
- Java 方法的重载及引用数据类型(类)
方法的重载 我们假设要在程序中实现一个对数字求和的方法,由于参与求和数字的个数和类型都不确定,因此要针对不同的情况去设计不同的方法. Java允许在一个类中定义多个名称相同的方法,但是参数的类型或个数 ...
随机推荐
- Mybatis常见问题总结
1.大于号.小于号在sql语句中的转换 使用mybatis 时sql语句是写在xml文件中,如果sql中有一些特殊的字符的话,比如< ,<=,>,>=等符号,会引起xml格式的 ...
- HTC Vive 基础入门 基于Unreal Engine 4引擎
主要以讲解介绍HTC Vive设备以及Unreal继承的Steam VR Plugin为主 使用最新的虚幻引擎与Plugin完成VR环境的搭建 然后完成一个基本的VR Games. 任务5: 04-配 ...
- 前端 -- HTML内容
HTML介绍 Wed服务本质 import socket sk = socket.socket() sk.bind(("127.0.0.1", 8080)) sk.listen(5 ...
- BZOJ 4196 软件包管理器
树链剖分 建树之后,安装软件就是让跟节点到安装的节点路径所有点权+1,卸载软件就是让一个节点和他的子数-1 要求变化数量的话直接求和相减就行啦(绝对值) 注意一点,一开始的lazyatag应该是-1, ...
- 【XSY2759】coin DP 线性插值
题目描述 有\(n\)种面值不同的硬币,每种有无限个,且任意两个\((x,y)\)要么\(x\)是\(y\)的倍数,要么\(y\)是\(x\)的倍数. 你要取\(m\)元钱,问你有多少种不同的取法. ...
- codeforces 242E - XOR on Segment (线段树 按位数建树)
E. XOR on Segment time limit per test 4 seconds memory limit per test 256 megabytes input standard i ...
- MT【263】待定系数
已知$a,b>0$且$ab(a+b)=4$,求$2a+b$的最小值_____ 解答:$\sqrt{3}(2a+b)\ge(\sqrt{3}+1)a+b+(\sqrt{3}-1)(a+b)\ge3 ...
- luogu1397 [NOI2013]矩阵游戏 (等比数列求和)
一个比较显然的等比数列求和,但有一点问题就是n和m巨大.. 考虑到他们是在幂次上出现,所以可以模上P-1(费马小定理) 但是a或c等于1的时候,不能用等比数列求和公式,这时候就要乘n和m,又要变成模P ...
- print
说一说这个print函数,我们经常使用,但有一些细节却往往错过了 print print()输出会换行是因为默认end="\n" 想要不换行,且覆盖 print("\r第 ...
- BZOJ2801/洛谷P3544 [POI2012]BEZ-Minimalist Security(题目性质发掘+图的遍历+解不等式组)
题面戳这 化下题面给的式子: \(z_u+z_v=p_u+p_v-b_{u,v}\) 发现\(p_u+p_v-b_{u,v}\)是确定的,所以只要确定了一个点\(i\)的权值\(x_i\),和它在同一 ...
