/**
* 演示算术运算符的使用
*/
public class ArithmeticOperator{
public static void main(String[] args) {
// /的使用
System.out.println(10 / 4); // 2
System.out.println(10.0 / 4); // 2.5
// double d = 10 / 4;
// System.out.println(d); // 2.0
// % 取模,取余,负号跟着除数,取模的本质:a % b = a - a /b * b;
System.out.println(10 % 3); //1
System.out.println(-10 % 3); // -1
System.out.println(10 % -3); // 1
System.out.println(-10 % -3); // -1
// ++ 使用
int i = 10;
i++; // 等价于i = i + 1
++i; // 等价于i = i + 1
System.out.println("i=" + i);
/*
作为表达式使用
前++,++i先自增,后+1
后++,i++先赋值,后+1
*/
int j = 8;
int k = ++j;
j = 8;
int l = j++;
System.out.println("k=" + k + " j=" + j);
System.out.println("l=" + l + " j=" + j);
}
}
i=i++ 这种要注意,需要了解Java底层的设置思想,C语言的机制应该是i都等于2
public class ArithmeticOperatorEx01{
public static void main(String[] args) {
int i = 1;
i = i++; // 规则使用临时变量,1、temp = i, 2、i = i + i , 3、i = temp
System.out.println("i = " + i); //1
i = 1;
i = ++i; // i = i+ 1, temp = i, i = temp;
System.out.println("i = " + i); // 2
}
}
课堂实例
public class ArithmeticOperatorEx01{
public static void main(String[] args) {
int i = 1;
i = i++; // 规则使用临时变量,1、temp = i, 2、i = i + i , 3、i = temp
System.out.println("i = " + i); //1
i = 1;
i = ++i; // i = i+ 1, temp = i, i = temp;
System.out.println("i = " + i); // 2
// 测试输出,比较简单
int i1 = 10;
int i2 = 20;
i = i1++;
System.out.println("i=" + i);
System.out.println("i2=" + i2);
i = --i2;
System.out.println("i=" + i);
System.out.println("i2=" + i2);
}
}
// 1
public class ArithmeticOperatorEx02{
public static void main(String[] args) {
int days = 59;
int weeks = days / 7;
int leftDays = days % 7;
System.out.println(weeks + "星期" + leftDays +"天");
double f1 = 234.5;
double c1 = 5.0/9 * (f1 - 100);
System.out.println("摄氏度为:" + c1);
}
}
关系运算符
关系运算符结果是boolean,要么是true, 要么是false
5-Java运算符
public class RelationalOperator{
public static void main(String[] args) {
int a = 9; // 开发中不能使用a, b
int b = 8;
System.out.println(a > b);
System.out.println(a >= b);
System.out.println(a < b);
System.out.println(a <= b);
System.out.println(a == b);
System.out.println(a != b);
// System.out.println(a instanceof Integer); // instanceof 必须是引用类型,报错
boolean flag = a > b;
System.out.println("flag=" + flag);
}
}
逻辑运算符
5-Java运算符
&& 和 || 短路与或者短路或,只要能判断出来,第二个判断不会判断
&& &, || |, ^异或, !取反
&& 和 &的区别
/**
* 演示逻辑运算符的使用
*/
public class LogicOperator{
public static void main(String[] args) {
// && 和 || 案例演示
// && 两个都为真,才为真,&&和&区别是&&只要判断为假就不在进行判断
int age = 50;
if (age > 20 && age < 90){
System.out.println("ok100");
}
if (age > 20 && age < 30){
System.out.println("ok100");
}
// &的使用,
if (age > 20 & age < 90){
System.out.println("ok100");
}
//区别,&&和&区别是&&只要判断为假就不在进行判断
int a = 4;
int b = 9;
if (a <1 && ++b < 50){
System.out.println("ok300");
}
System.out.println("a=" + a + " b=" + b);
//
if (a <1 & ++b < 50){
System.out.println("ok300");
}
System.out.println("a=" + a + " b=" + b);
}
}
|| 和 |的区别
public class LogicOperator02{
public static void main(String[] args) {
// || 短路或和 |的区别,短路或||只要判断为真就不在进行判断
int age = 50;
if (age > 20 || age < 30){
System.out.println("ok100");
}
age = 50;
if (age > 20 | age < 30){
System.out.println("ok200");
}
// 看看区别
int a = 4;
int b = 9;
if (a > 1 || ++b < 50){
System.out.println("ok300");
}
System.out.println("a=" + a + " b=" + b);
// |
if (a > 1 | ++b < 50){
System.out.println("ok300");
}
System.out.println("a=" + a + " b=" + b);
}
}
!取反
public class LogicOperator03{
public static void main(String[] args) {
System.out.println(60 > 20);
System.out.println(!(60 > 20));
// ^ 异或,不同为真,相同为假
boolean b = (10 > 1) ^ (3 < 5);
System.out.println("b=" + b);
boolean a = (10 > 1) ^ (3 > 5);
System.out.println("a=" + a);
}
}
赋值运算符
赋值运算符就是将某个运算后的值,赋给指定的变量
复合运算符会自动进行类型转换;
// 演示运算符的使用
public class AssignOperator{
public static void main(String[] args) {
int n1 = 10;
n1 += 4; // n1 = n1 + 4;
System.out.println("n1=" + n1);
n1 /= 3;
System.out.println("n1=" + n1);
// 复合运算符会自动进行类型转换
byte b = 3;
b += 2; // b =(byte) (b + 2);
//b = b + 2; // 会报错,类型强制转换
b++; // b = (byte)(b + 1)
}
}
位运算符
运算符优先级
5-Java运算符
标识符命令规则
数字不能开头,只能有26个英文字符大小写,以及_,以及$组成
不能由关键字或者保留字组成
标识符命名规范
5-Java运算符
import java.util.Scanner;
// 扫描器
public class Input{
public static void main(String[] args) {
// 演示接受用户的输入
// 步骤
// 1.引入Scanner的包
// 2.创建Scanner对象
// 3.接受用户的输入
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入名字");
String name = myScanner.next();
System.out.println("请输入年龄:");
int age = myScanner.nextInt();
System.out.println("请输入薪水:");
double sal = myScanner.nextDouble();
System.out.println("人的信息如下:");
System.out.println("name=" + name + " age=" + age + " sal=" + sal);
}
}
进制
// 演示四种进制
//
public class BinaryTest{
public static void main(String[] args) {
// n1 二进制
int n1 = 0b1010;
// n2 10进制
int n2 = 1010;
// n3 8进制
int n3 = 01010;
// n4 16进制
int n4 = 0x1010;
System.out.println("n1=" + n1);
System.out.println("n2=" + n2);
System.out.println("n3=" + n3);
System.out.println("n4=" + n4);
}
}
public class BitOperator02{
public static void main(String[] args) {
System.out.println("12 >> 2 " + (12 >> 2));
System.out.println("12 << 2 " + (12 << 2));
}
}
三元运算符
基本语法:条件表达式?表达式1:表达式2;
细节:表达式1和表达式2要为可以赋给接受变量的类型(或者可以自动转换)
// 三元运算符细节
public class TemaryOperatorDetail{
public static void main(String[] args) {
// 表达式1和表达式2要为可以赋给接受变量的类型(或者可以自动转换)
int a = 3;
int b = 8;
int c = a > b ? a : b;
// int c = a > b ? 1.1 : 3.4; // 报错
double d = a > b ? a : b;
}
}
public class TemaryOperatorEx01{
public static void main(String[] args) {
// 实现三个数的最大值,用三元运算符
int n1 = 55;
int n2 = 33;
int n3 = 123;
// 思路
// 1.先得到n1和n2中的最大数,保存到max1
// 2.然后在求出max1和 n3 中的最大数,保存到n2
int max1 = n1 > n2 ? n1 : n2;
int max2 = max1 > n3 ? max1 : n3;
System.out.println("max最大数:" + max2);
// 使用一条语句实现,其实就是拆解,大问题先拆成小问题,然后在解决
int max = (n1 > n2 ? n1 : n2) > n3 ? (n1 > n2 ? n1 : n2) : n3;
}
}