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基础语法(二)的更多相关文章

  1. java基础语法(二)

    一.运算符 算数运算符 算数运算符用在数学表达式中,它们的作用和在数学中的作用一样. 操作符 描述 例子 + 两数相加 1+1=2 - 两数相减 2-1=1 * 两数相乘 1*1=1 / 两数相除 1 ...

  2. Java基础语法<二> 字符串String

    1. 代码点与代码单元 Java字符串由char序列组成.大多数的常用Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示. length()方法将返回采用UTF-16编码表示 ...

  3. Java基础语法(二)之流程控制语句

    流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块 .控制语句分为三类:顺序,选择和循环. “顺序结构”代表”先执行a,再执行b”的逻辑.比如,先找个女朋友, ...

  4. Java基础语法(二)<运算符>

    运算符: 下面的都是相关的练习: 1.键盘录入一个三位整数数,请分别获取该三位数上每一位的数值 import java.util.Scanner; public class Test02 { publ ...

  5. JavaSE入门学习7:Java基础语法之语句(下)

    继续接着Java基础语法来:JavaSE入门学习5:Java基础语法(一)和JavaSE入门学习6:Java基础语法(二). 语句 Java经常使用的3种循环:while.do...while,for ...

  6. 003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程

    003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程 Java程序长啥样? 首先编写一个Java程序 记事本编写程序 打开记事本 1.wi ...

  7. java基础语法(二)--单列模式

    java基础语法(二)--单列模式 /** * 功能:单列模式 * @author Administrator * */ public class SingletonTest { public sta ...

  8. 071 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 03 综合案例-数组移位-显示数组当中所有元素的的方法

    071 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 03 综合案例-数组移位-显示数组当中所有元素的的方法 本文知识点:综合案例-数组移位-显示数组当中所有元素 ...

  9. 062 01 Android 零基础入门 01 Java基础语法 07 Java二维数组 01 二维数组应用

    062 01 Android 零基础入门 01 Java基础语法 07 Java二维数组 01 二维数组应用 本文知识点:二维数组应用 二维数组的声明和创建 ? 出现空指针异常 数组的名字指向数组的第 ...

随机推荐

  1. [转]SQL server 2008R2 中 C#Winfoirm 使用 SqlDependency 机制实现 数据库中某一张表的监视

    转自:https://blog.csdn.net/u012183487/article/details/77776930 System.Data.SqlClient命名空间下的 sqlDependen ...

  2. Spring-Kafka —— 实现批量消费和手动提交offset

    spring-kafka的官方文档介绍,可以知道自1.1版本之后, @KafkaListener开始支持批量消费,只需要设置batchListener参数为true 把application.yml中 ...

  3. Git(1):思想及概念

    Git与其他版本控制软件的差异及思想 直接记录快照,而非差异比较 Git不保存这些前后变化的差异数据.实际上,Git 更像是把变化的文件作快照后,记录在一个微型的文件系统中.每次提交更新时,它会纵览一 ...

  4. windows端口映射

    1. 查看netsh interface portproxy show all 2. 添加端口映射转发netsh interface portproxy add v4tov4 listenaddres ...

  5. C#中的接口和抽象类学习

    今天学习了接口和抽象类,但并没有很好的进行整理,所以现在写的时候,脑子里多少有点乱乱的,先从接口开始吧. interface 接口,规定了所有派生类的需要遵循的标准,接口定义了需要做些什么,但是没有具 ...

  6. 一个提高照片质量的网站和一个改变照片DPI的方法

    相信很多童鞋都有遇到过,碰到一张很喜欢的图片,想用来做背景什么的,蛋似--因为画质太AV了怕引起误会,所以不敢使用!很气--!! 这时大神就会跳出来说,画质不好?PS是用来吃si的么! 我:我才不会用 ...

  7. 【计算机视觉】UCLA开源图像检测器

    UCLA (加州大学洛杉矶分校)发布了一个强大的图像检测软件的源码 ,该软件可以非常高速的检测每个图像的细节,例如可用于检测指纹和虹膜,或者用于自动驾驶.通过识别物体的边界进行提取.首先确定一个物体的 ...

  8. Textual Entailment(自然语言推理-文本蕴含) - AllenNLP

    自然语言推理是NLP高级别的任务之一,不过自然语言推理包含的内容比较多,机器阅读,问答系统和对话等本质上都属于自然语言推理.最近在看AllenNLP包的时候,里面有个模块:文本蕴含任务(text en ...

  9. Loj 2230. 「BJOI2014」大融合 (LCT 维护子树信息)

    链接:https://loj.ac/problem/2230 思路: 设立siz数组保存虚点信息,sum表示总信息 维护子树信息link操作和access操作需要进行一些改动 可参考博客:https: ...

  10. hdoj4812 D Tree(点分治)

    题目链接:https://vjudge.net/problem/HDU-4812 题意:给定一颗带点权的树,求是否存在一条路经的上点的权值积取模后等于k,如果存在多组点对,输出字典序最小的. 思路: ...