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. HashMap 怎么 hash?又如何 map?

    HashMap 是 Java 中 Map 的一个实现类,它是一个双列结构(数据+链表),这样的结构使得它的查询和插入效率都很高.HashMap 允许 null 键和值,它的键唯一,元素的存储无序,并且 ...

  2. 刚开始使用idea的朋友,可以看一下下面这篇文章

    刚开始使用idea的朋友,可以点击本链接看一下这篇文章 以及这些文章 http://www.jetbrains.com/help/idea/getting-help.html------ Gettin ...

  3. 35 个最好用 Vue 开源库

    2018年度 35 个最好用 Vue 开源库 在本文中,我们将推荐一些非常好用的 Vue 相关的开源项目.无论是开发新手还是经验丰富的老手,我们都喜欢开源软件包.对于开发者来说,如果没有这些开源软件包 ...

  4. 重点做EUR/USD、EUR/JPY、GBP/USD。

    这三种货币对,几乎每天都有合适的行情.

  5. 计蒜客 —— 字符串p型编码

    给定一个完全由数字字符('0','1','2',…,'9')构成的字符串 strstr,请写出 strstr 的 pp 型编码串. 例如:字符串122344111可被描述为“1个 1.2 个 2.1 ...

  6. Linux三种SSH协议登陆方式

    在实际工作中遇到了三种不同SSH协议登陆Linux服务器的方式,由简单到复杂分别阐述:一.最简单也是最不安全的root账号密码登陆通过root账号+root密码登陆Linux服务器. 二.普通用户登陆 ...

  7. 通过SublimeCodeIntel设置JavaScript自动补全

    1.首先安装SublimeCodeIntel包. 进入sublime,通过Ctrl+Shift+P进入包管理,输入pci(首字母),选择Package Contrl:Intall Package,如图 ...

  8. LESSON 7- High Rate Quantizers and Waveform Encoding

    1.      The Lloyd-Max algorithm is hill-climbing algorithm 第六节最后提出一个好的quantizer必须满足Lloyd-Max条件,但满足Ll ...

  9. [python] 初识 PyQt5

    昨天想着用 Python 写个展示的 demo,之前打算熟悉一下 PyQt ,正好边学边做,学以致用. 主要的流程是在 cmd 下运行 .exe 并读取输出结果,运到的困难是如何实时回传数据以及修改图 ...

  10. [转帖]开始使用Chronograf

    地址:https://docs.influxdata.com/chronograf/v1.6/introduction/getting-started/ https://www.cnblogs.com ...