1. 运算符
1.1 概述
- 运算符的概述
- 对常量和变量进行操作的符号被称作运算符。
- 表达式的概述
- 用运算符把常量或者变量连接起来的符号java语法的式子就可以称为表达式。不同运算符连接的式子体现的是不同类型的表达式。
- 定义两个int类型的变量a,b,做加(a+b)
- 常用的运算符
- 算数运算符
- 赋值运算符
- 关系运算符
- 逻辑运算符
- 三元运算符
1.2 算数运算符
package com.study.demo.operator;
/**
* @Auther: lds
* @Date: 2018/10/15
* @Description:
*/
public class OperatorDemo01 {
public static void main(String[] args) {
// 定义两个变量
int a = 3;
int b = 4;
System.out.println(a+b); // 7
System.out.println(a-b); // -1
System.out.println(a*b); // 12
System.out.println(a/b); // 0
System.out.println(3/4.0); // 0.75
System.out.println(3.0/4); // 0.75
}
}
- %的用法
- 得到两个相除数据的余数。
- 用处:判断两个数是否整除。
package com.study.demo.operator;
/**
* @Auther: lds
* @Date: 2018/10/15
* @Description:
*/
public class OperatorDemo02 {
public static void main(String[] args) {
int a = 5;
int b = 3;
System.out.println(a / b); // 1
System.out.println(a % b); // 2
}
}
- +的多种用法
- 数字相加。
- 字符相加:拿字符在计算机中底层存储对应的数据值来参与运算的。
- 字符串相加:这里的+不是相加的意思,是字符串的连接符。字符串和其他类型的数据做拼接的时候,得到的结果还是字符串类型的数据。
package com.study.demo.operator;
/**
* @Auther: lds
* @Date: 2018/10/15
* @Description:
*/
public class OperatorDemo03 {
public static void main(String[] args) {
// 整数的加法
int a = 10;
int b = 20;
System.out.println(a + b); // 30
System.out.println("-----------------");
// 字符参与加法的操作
char c = '0';
char d = 'a';
System.out.println(a + c); // 58
System.out.println(a + d); // 107
System.out.println("-----------------");
// 字符串参与加法操作
System.out.println("hello" + a); // hello10
System.out.println("hello" + a + b); // "hello"+10="hello10",然后再和b进行拼接 hello1020
System.out.println(a + b + "hello"); // 从左到右依次计算,先求和,在连接 30hello
}
}
注:数字0是编码值为 48 所对应的字符常量,字母是编码值为 97 所对应的字符常量,它们都对应着ASCII表,具体可查看 https://baike.baidu.com/item/ASCII/309296?fr=aladdin
- ++、-- 的用法
- ++、-- 运算符:对变量做加1或者减1的操作。
- ++、-- 既可以写在变量的前面又可以写在变量的后面。
- 单独使用:++、-- 无论是写在变量的前面还是变量的后面,结果是一样的。
- 和其他操作混合使用:
如果++、-- 写在变量的后面,先拿变量本来的值草鱼操作,结果后变量做++、-- 操作。
如果++、-- 写在变量的前面,先把变量做++、--,再用改变后的值参与++、-- 操作。
package com.study.demo.operator;
/**
* @Auther: lds
* @Date: 2018/10/15
* @Description:
*/
public class OperatorDemo04 {
public static void main(String[] args) {
int a = 10;
System.out.println("a = " + a);
// 单独使用++
a++;
// ++a;
System.out.println("a = " + a);
// 参与操作使用
// int b = a++;
int b = ++a;
System.out.println("a = " + a);
System.out.println("b = " + b);
}
}
1.3 赋值运算符
- 基本的赋值运算符:=
- 扩展的赋值运算符:+=、-=、*=、/=、%=
- 把左边和右边的结果赋值给左边。
- 注意:左边不能是常量。
- 隐含了一个强制类型转换。
package com.study.demo.operator;
/**
* @Auther: lds
* @Date: 2018/10/15
* @Description:
*/
public class OperatorDemo05 {
public static void main(String[] args) {
// 把 10 赋值给 int 类型的变量 a
int a = 10;
// += 把左边和右边的数据进行运算,最后赋值给左边,左边的只能是变量
a += 10;// 相当于 a = a + 10
System.out.println("a:" + a);
System.out.println("----------------------");
short s = 10;
// s += 20; // 相当于 s = s + 20;
s = (short) (s + 20);
System.out.println("s:" + s);
}
}
1.4 关系运算符
- ==,!=,>,<,>=,<=
- 关系运算符的结果都是boolean类型的,也就是说要么是true,要么是false。
- 注意事项
- 关系运算符 “==” 不能写成 “=”
package com.study.demo.operator;
/**
* @Auther: lds
* @Date: 2018/10/15
* @Description:
*/
public class OperatorDemo06 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 10;
System.out.println(a == b); // false
System.out.println(a == c); // true
System.out.println("-----------------");
System.out.println(a != b); // true
System.out.println(a != c); // false
System.out.println("-----------------");
System.out.println(a > b); // false
System.out.println(a > c); // false
System.out.println("-----------------");
System.out.println(a >= b); // false
System.out.println(a >= c); // true
System.out.println("-----------------");
int x = 3;
int y = 4;
System.out.println(x == y); // false
// System.out.println(x = y);// 把 y 赋值给 x,把 x 的值输出
boolean bb = (x == y);
// 报错
// boolean cc = (x = y);
int cc = (x = y);
}
}
1.5 逻辑运算符
- 作用:逻辑运算符用于连接布尔类型表达式,在java中不可以写成3<x<6,应该写成x>3&&x<6
- 基本用法:&(与)、|(或)、^(亦或)、 !(非)
- 与:& 有false则false
- 或:| 有true则true
- 异或:^ 相同则false,不同则true
- 非:! true则false,false则true
package com.study.demo.operator;
/**
* @Auther: lds
* @Date: 2018/10/15
* @Description:
*/
public class OperatorDemo07 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
System.out.println((a > b) & (a > c)); // false & false
System.out.println((a < b) & (a > c)); // true & false
System.out.println((a > b) & (a < c)); // false & true
System.out.println((a < b) & (a < c)); // true & true
System.out.println("---------------");
System.out.println((a > b) | (a > c)); // false | false
System.out.println((a < b) | (a > c)); // true | false
System.out.println((a > b) | (a < c)); // false | true
System.out.println((a < b) | (a < c)); // true | true
System.out.println("---------------");
System.out.println((a > b) ^ (a > c)); // false ^ false
System.out.println((a < b) ^ (a > c)); // true ^ false
System.out.println((a > b) ^ (a < c)); // false ^ true
System.out.println((a < b) ^ (a < c)); // true ^ true
System.out.println("---------------");
System.out.println((a > b)); // false
System.out.println(!(a > b)); // !false
System.out.println(!!(a > b)); // !!false
}
}
- &和&&的区别
- 单&时,左边无论真假,右边都进行运算。
- 双&时,如果左边为真,右边参与运算;如果左边为假,那么右边不参与运算。
- “|”和“||”的区别同理,双或时,左边为真,右边不参与运算。
package com.study.demo.operator;
/**
* @Auther: lds
* @Date: 2018/10/15
* @Description:
*/
public class OperatorDemo08 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
System.out.println((a > b) && (a > c)); // false && false
System.out.println((a < b) && (a > c)); // true && false
System.out.println((a > b) && (a < c)); // false && true
System.out.println((a < b) && (a < c)); // true && true
System.out.println("---------------");
System.out.println((a > b) || (a > c)); // false || false
System.out.println((a < b) || (a > c)); // true || false
System.out.println((a > b) || (a < c)); // false || true
System.out.println((a < b) || (a < c)); // true || true
System.out.println("---------------");
int x = 3;
int y = 4;
// System.out.println((x++ > 4) & (y++ > 5)); // false & false
System.out.println((x++ > 4) && (y++ > 5)); // false && false
System.out.println("x:" + x); // 4
System.out.println("y:" + y); // 4
}
}
1.6 三元运算符
- 基本使用
- 格式:{关系表达式}?表达式1:表达式2
- 如果条件为true,运算后的结果是表达式1;
- 如果条件为false,运算后的结果是表达式2
package com.study.demo.operator;
/**
* @Auther: lds
* @Date: 2018/10/15
* @Description:
*/
public class OperatorDemo09 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = (a > b) ? a : b;
System.out.println("c:" + c); // 20
}
}
获取三个数的最大值
package com.study.demo.operator;
/**
* @Auther: lds
* @Date: 2018/10/15
* @Description:
*/
public class OperatorDemo10 {
public static void main(String[] args) {
// 定义三个 int 类型的变量
int a = 10;
int b = 30;
int c = 20;
// 先比较两个整数的大值
int temp = ((a > b) ? a : b);
int max = ((temp > c) ? temp : c);
System.out.println("max:" + max); // 30
}
}
2. 键盘录入Scanner
2.1 概述
我们目前在写程序的时候,数值都是固定的,但是实际开发中,数据肯定是变化的,所以,把数据改为键盘输入的,提高程序的灵活性。
2.2 引用数据类型的使用格式
与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格
式。
1. 导包:
使用 import 导包,在类的所有代码之前导包(找到要使用的类型), java.lang 包下的所有类
无需导入,可以直接使用
2. 定义变量,并创建对象赋值:
数据类型 变量名 = new 数据类型();
3. 调用方法,每种引用数据类型都有其功能,我们可以调用该类型实例的功能:
变量名.方法名();
2.3 基本使用步骤
1. 导包(位置放到 class 定义的上面)
import java.util.Scanner;
2. 创建对象
Scanner sc = new Scanner(System.in);
3. 调用方法接收数据
int x = sc.nextInt();
package com.study.demo.scanner;
import java.util.Scanner;
/**
* @Auther: lds
* @Date: 2018/10/15
* @Description:
*/
public class ScannerDemo01 {
public static void main(String[] args) {
//创建键盘录入数据的对象
Scanner sc = new Scanner(System.in);
//接收数据
System.out.println("请录入一个整数:");
int i = sc.nextInt();
//输出数据
System.out.println("i:" + i);
}
}
例:键盘输入两个数的并求和
package com.study.demo.scanner;
import java.util.Scanner;
/**
* @Auther: lds
* @Date: 2018/10/15
* @Description:
*/
public class ScannerDemo02 {
public static void main(String[] args) {
// 创建对象
Scanner sc = new Scanner(System.in);
// 接收数据
System.out.println("请输入第一个数据:");
int a = sc.nextInt();
System.out.println("请输入第二个数据:");
int b = sc.nextInt();
// 对数据进行求和
int sum = a + b;
System.out.println("sum:" + sum);
}
}
大家可以练习上面的表达式,最大值哦ヾ(๑╹◡╹)ノ"ヾ(๑╹◡╹)ノ"ヾ(๑╹◡╹)ノ"