03:Java基础语法(二)
Java基础语法
Java运算符
算术运算符
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
1、操作数:参与运算的数据 称为操作数。
2、表达式:运算符和操作数的整体 称为表达式。单独的一个操作数也可以看作一个最简单的表达式。 int age = 1+1;
3、返回值:操作数 或者是 表达式 参与 运算的结果。
4、一元运算符:只需要一个操作数的运算符。也叫做 单目运算符。
5、二元运算符:需要两个操作数的运算符。也叫做 双目运算符。
6、三元运算符:需要三个操作数的运算符。也叫做 三目运算符。
注意:参与所有运算的数据,都是操作数 或者 表达式的 返回值 参与的。

/ 和 % 的应用 [ 求随机数的千位、百位、十位、个位 ]
public class Test {
public static void main(String[] args) {
// 任意四位数
Scanner scanner = new Scanner(System.in);
System.out.print("请输入任意四位数:");
int num = scanner.nextInt();
int unit = num % 10;// 个位
int decade = num / 10 % 10; // 十位
int hundred = num / 100 % 10;// 百位
int Thousands = num / 1000 % 10;// 千位
System.out.println("千位:" + Thousands + "\n百位:" + hundred + "\n十位:" + decade + "\n个位:" + unit);
}
}
代码演示

i++和++i的异同之处
共同点:
1、i++ 和 ++i 都是变量自增+1,都等价于i=i+1
2、如果i++,++i是一条单独的语句,两者没有任何区别。
3、i++和++i的使用仅仅针对变量。5++和++5会报错,因为5不是变量。
不同点:
如果i++,++i 不是一条单独的语句,他们就有很大的区别。

赋值运算符
符号: = 符合赋值运算符:[Java中:+=、-=、*=、/=、%=] => 类型自动提升
复合赋值运算符特点:
1,生成的字节码文件要稍微小一点点(内存消耗小)。
2,隐含一个强制类型的转换。强制转换的类型为 左边变量的类型
* 左值 的类型 要和 右值表达式的返回值的类型 要兼容,不然会出现精度丢失。
示例:int a,b,c; a = b = c =3;
int a = 3; a += 5; => a+=5 <==> a=a+5
比较运算符(关系运算符)
1、>、<、>=、<= :只适用于 数值型包括 char 类型的数据。
2、== != 适用于 java支持的所有的数据类型。
逻辑运算符
参与逻辑运算的操作数必须是 boolean 类型的数据。逻辑表达式的 返回值 也是 boolean 类型。在Java中不可以写成3<x<6,应该写成x>3 & x<6



短路与( && ) 、条件与 ( & )区别:
&&:如果表达式左边为真,表达式右边参与运算;如果左边为假,那么右边不参与运算,直接返回整个逻辑表达式的结果为false 。
& :表达式左边运算结果无论真假,右边都进行运算。
* 短路与的效率往往高于逻辑与,通常使用短路与 &&
int value = 1;
System.out.println((1 < 2) & (value++ > 0)); // true
System.out.println((1 > 2) & (value++ > 0)); // false
短路或( || ) 、 条件或 ( | )区别:
|: 无论左边运算结果是什么,右边参与运算;
||:当左边为true时,右边不参与运算;直接返回整个逻辑表达式的值 为 true
int value = 1;
System.out.println((1 < 2) | (value++ > 0)); // true
System.out.println((1 > 2) || (value++ > 2)); // false
异或( ^ )与或( | )的不同之处是:只有表达式左右都为true时,结果为false,当两边都为false,结果也为false
// 一边为true,一边为false
System.out.println((3 > 2) ^ (9 < 8)); // true
// 一边为false,一边为true
System.out.println((7 > 10) ^ (9 > 3)); // true
// 两边都为true
System.out.println((3 > 2) ^ (2 > 1)); // false
// 两边都为false
System.out.println((1 > 2) ^ (2 > 3)); // false
位运算符
解释:位运算符是直接对整数进行二进制运算
按位与( & ):二元运算符。
规则:低位对齐,进行按位与。 对应的位 有0则0 全1则1.
1:可以将某个整数的某些二进制位设置为0。
2:可以得到某一个数的制定区间的二进制表示的数据。
按位或( | ):二元运算符。
规则:低位对齐,进行按位或。对应的位,有1则1,全0则0
*如果两个操作数 对应的位上没有全1 的,那么进行按位或和加的效果一致
按位异或( ^ ):二元运算符。
规则:对应的位上 相异为1,相同为0
特点:一个数先后和同一个数据异或两次,结果是它自身
异或简单加密应用
按位取反( ~ ) :一元运算符。
规则:所有的二进制位0--->1 1--->0
System.out.println(~0);//-1
移位运算符
<< 左移 :高位被移走,包括符号位。低位补0
>> :带符号右移 :低位被移走,高位空出来的补符号位,正数补0 负数补1
三元运算符( 条件运算符 )
Java 中唯一的三目运算符。 需要三个操作数。可以是java 支持的任意的表达式。两个表达式的返回值的类型 需要兼容。
格式:条件表达式 ? 表达式1 : 表达式2
1)条件表达式为true,返回表达式1;
2)条件表达式为false,返回表达式2;
两值互换的几种方法:
1、定义第三方变量进行互换
2、数值直接运算 缺:数值过大超过int取值范围,出现强制转换,数据发生变化
3、异或:一个数异或同一个数两次,结果还是这个数(阅读性差)
运算符的优先级

1:乘除取余 大于 加减。
2:一元运算符 大于 二元运算符 的优先级。
3:二元运算符的优先级高于三元运算符的优先级。
4:赋值运算符优先级最低。
5:配合小括号使用。
random随机数
1、Math.random();返回值是一个随机的double 值
语句:Math.random() * (MAX-MIN) + MIN

取整:int value = (int)(Math.random() * (MAX-MIN) + MIN);

2、导入import java.util.Random产生随机数
位移运算符:一条语句产生随机数:int value = (random.nextInt()>>>1)%(MAX-MIN)+MIN;

随机数+三目运算符应用[ 求三个数的最大值 ]
public class Test {
public static void main(String[] args) {
// 定义随机数区间
final int MIN = 1, MAX = 100;
Random random = new Random();
int num1 = (random.nextInt() >>> 1) % (MAX - MIN) + MIN;
int num2 = (random.nextInt() >>> 1) % (MAX - MIN) + MIN;
int num3 = (random.nextInt() >>> 1) % (MAX - MIN) + MIN;
// int num1 = (int)(Math.random()*(MAX-MIN)+MIN);
// int num2 = (int)(Math.random()*(MAX-MIN)+MIN);
// int num3 = (int)(Math.random()*(MAX-MIN)+MIN);
int max = num1 > num2 ? num1 : num2;
max = max > num3 ? max : num3;
System.out.print("num1 = " + num1 + "\tnum2 = " + num2 + "\tnum3 = " + num3 + "\tmax=>" + max);
}
}
03:Java基础语法(二)的更多相关文章
- java基础语法(二)
一.运算符 算数运算符 算数运算符用在数学表达式中,它们的作用和在数学中的作用一样. 操作符 描述 例子 + 两数相加 1+1=2 - 两数相减 2-1=1 * 两数相乘 1*1=1 / 两数相除 1 ...
- Java基础语法<二> 字符串String
1. 代码点与代码单元 Java字符串由char序列组成.大多数的常用Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示. length()方法将返回采用UTF-16编码表示 ...
- Java基础语法(二)之流程控制语句
流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块 .控制语句分为三类:顺序,选择和循环. “顺序结构”代表”先执行a,再执行b”的逻辑.比如,先找个女朋友, ...
- Java基础语法(二)<运算符>
运算符: 下面的都是相关的练习: 1.键盘录入一个三位整数数,请分别获取该三位数上每一位的数值 import java.util.Scanner; public class Test02 { publ ...
- JavaSE入门学习7:Java基础语法之语句(下)
继续接着Java基础语法来:JavaSE入门学习5:Java基础语法(一)和JavaSE入门学习6:Java基础语法(二). 语句 Java经常使用的3种循环:while.do...while,for ...
- 003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程
003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程 Java程序长啥样? 首先编写一个Java程序 记事本编写程序 打开记事本 1.wi ...
- java基础语法(二)--单列模式
java基础语法(二)--单列模式 /** * 功能:单列模式 * @author Administrator * */ public class SingletonTest { public sta ...
- 071 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 03 综合案例-数组移位-显示数组当中所有元素的的方法
071 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 03 综合案例-数组移位-显示数组当中所有元素的的方法 本文知识点:综合案例-数组移位-显示数组当中所有元素 ...
- 062 01 Android 零基础入门 01 Java基础语法 07 Java二维数组 01 二维数组应用
062 01 Android 零基础入门 01 Java基础语法 07 Java二维数组 01 二维数组应用 本文知识点:二维数组应用 二维数组的声明和创建 ? 出现空指针异常 数组的名字指向数组的第 ...
随机推荐
- golang channel详解和协程优雅退出
非缓冲chan,读写对称 非缓冲channel,要求一端读取,一端写入.channel大小为零,所以读写操作一定要匹配. func main() { nochan := make(chan int) ...
- vue弹窗后如何禁止滚动条滚动?
原文地址 常见场景 在许多填写表单的页面中,都会弹出一个选择器,让你在弹窗中选择项目.有时,弹窗本身容纳不下内容,需要让它不断滚动来展示,但因为事件是冒泡的,有时就会造成底部(body 的Z-inde ...
- idea标签页多行显示+设置标签页上限
idea标签页多行显示+设置标签页上限 Setting--Editor--General--Editor Tabs
- 爬虫实现51job谁看过我的简历多条记录功能
默认情况下51job只能看到最近一条记录,查看更多记录需要付费. 本文利用爬虫定时抓取记录,并追加写入到文本的方式获取完整的记录信息. import requests from bs4 import ...
- 【并行计算-CUDA开发】有关CUDA当中global memory如何实现合并访问跟内存对齐相关的问题
ps:这是英伟达二面面的一道相关CUDA的题目.<NVIDIA CUDA编程指南>第57页开始 在合并访问这里,不要跟shared memory的bank conflic ...
- PYTHON 100days学习笔记007-2:python数据类型补充(2)
目录 day007:python数据类型补充(2) 1.Python3 元组 1.1 访问元组 1.2 删除元组 1.3 元组运算符 1.4 元组索引,截取 1.5 元组内置函数 2.python3 ...
- hdoj6446(树形DP)
题目链接:https://vjudge.net/problem/HDU-6446 题意:简化题意后就是求距离和的2*(n-1)!倍. 思路: 简单的树形dp,通过求每条边的贡献计算距离和,边(u,v) ...
- 自动载入Python虚拟环境
自动载入Python虚拟环境 在安装jumpserver服务时发现可以使用autoenv来自动载入python虚拟环境,很好,非常好. $ cd /opt $ git clone https://gi ...
- 【2018】Python面试题【web框架】
1.谈谈你对http协议的认识. HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议.它可以使浏览器更加高效,使 ...
- mybatis-plus代码生成器两版(全部生成+部分生成)
mybatis-plus代码生成器两版(全部生成+部分生成) 一次性生成全部文件 package com.layuicms.erp.utils; import java.util.List; impo ...