一、类型转换
1.自动类型转换
定义:类型范围小的变量,可以直接赋值给类型范围大的变量
为什么要进行类型转换?---存在不同类型的变量赋值给其他类型的变量
package com.pikaqiu.type;
public class TypeDemo1 {
public static void main(String[] args) {
byte a = 20;
int b = a; //发生了自动类型转换
System.out.println(a);
System.out.println(b);
int age = 23;
double db = age; //自动类型准换
System.out.println(db);
char ch = 'a';
int code = ch;
System.out.println(code);
}
}
2.表达式的自动类型转换
在表达式中,小范围类型的变量会自动转换成当前较大范围的类型再运算
注意事项:1.表达式的最终结果类型由表达式中的最高类型决定;2.在表达式中,byte、short、char是直接转换为int类型参与运算的
package com.pikaqiu.type;
public class TypeDemo2 {
public static void main(String[] args) {
byte a = 10;
int b = 20;
double c = 1.0;
double rs = a+b+c;
System.out.println(rs);
double rs2 = a+b-2.3;
System.out.println(rs2);
//题目
byte i = 10;
byte j = 20;
//byte k = i+j; 错误,在表达式中,byte、short、char是直接转换为int类型参与运算的
int k = i+j;
System.out.println(k);
}
}
3.强制类型转换
定义:可以强行将类型范围大的变量、数据赋值给类型范围小的变量
数据类型 变量2 = (数据类型)变量1、数据
注意事项:1.强制类型转换可能造成数据(丢失)溢出;2.浮点型强制转换成整型,直接丢掉小数部分,保留整数部分返回
package com.pikaqiu.type;
public class TypeDemo3 {
public static void main(String[] args) {
int a = 20;
byte b = (byte)a;
System.out.println(a);
System.out.println(b);
int i = 1500;
byte j = (byte)i;
System.out.println(j); //强制类型转换造成了数据溢出
double score = 99.5;
int it = (int)score;
System.out.println(it); //浮点型强制转换成整型,直接丢掉小数部分,保留整数部分返回
}
}
二、运算符
1.基本算术运算符
package com.pikaqiu.operator;
public class OperatorDemo1 {
public static void main(String[] args) {
int a = 10;
int b = 3;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b);
System.out.println(a * 1.0/b); //得到小数
System.out.println(a%b);
}
}
案例:将一个三位数,拆分成个位、十位、百位后,打印输出
package com.pikaqiu.operator;
public class OperatorDemo2 {
public static void main(String[] args) {
// 需求:拆分3位数,把个位、十位、百位分别输出
int data = 589;
//1.个位
int ge = data%10;
System.out.println(ge);
//2.十位
int shi = data/10 % 10;
System.out.println(shi);
//3.百位
int bai = data/100;
System.out.println(bai);
}
}
2.+符号做连接符
"+"符号与字符串运算的时候是用作连接符的,其结果依然是一个字符串
package com.pikaqiu.operator;
public class OperatorDemo3 {
public static void main(String[] args) {
//能算则算,不能算就在一起
int a = 5;
System.out.println("abc"+'a'); //abca
System.out.println("abc"+a); //abc5
System.out.println(5+a); //10
System.out.println(5+'a'); //102
System.out.println("abc"+5+'a'); //abc5a
System.out.println(15+"abc"+15); //15abc15
System.out.println(a+'a'); //102
System.out.println(a+""+'a'); //5a
System.out.println(a+'a'+"pikaqiu"); //102pikaqiu
System.out.println("pikaqiu"+a+'a'); //pikaqiu5a
System.out.println("pikaqiu"+(a+'a')); //pikaqiu102
}
}
3.自增自减运算符
++ : 自增,变量自身的值加1
-- : 自减,变量自身的值减1
注意:1.++和--既可以放在变量后面,也可以放在前面;2.++和--只能操作变量,不能操作字面量
package com.pikaqiu.operator;
public class OperatorDemo4 {
public static void main(String[] args) {
//单独使用
int a = 10;
a++; //a = a+1;
System.out.println(a); //11
int b = 10;
// b--; //b=b-1
// System.out.println(b); //9
--b;
System.out.println(b); //9
System.out.println("--------------------------------------------");
//在表达式中不是单独使用
//++、--在变量前面,先+1、-1,再使用
int i = 10;
int j = ++i;
System.out.println(i); //11
System.out.println(j); //11
//++、--在变量后面,先使用,再+1、-1
int m = 10;
int n = m++;
System.out.println(m); //11
System.out.println(n); //10
}
}
案例:
package com.pikaqiu.operator;
public class OperatorDemo4 {
public static void main(String[] args) {
//单独使用
int a = 10;
a++; //a = a+1;
System.out.println(a); //11
int b = 10;
// b--; //b=b-1
// System.out.println(b); //9
--b;
System.out.println(b); //9
System.out.println("--------------------------------------------");
//在表达式中不是单独使用
//++、--在变量前面,先+1、-1,再使用
int i = 10;
int j = ++i;
System.out.println(i); //11
System.out.println(j); //11
//++、--在变量后面,先使用,再+1、-1
int m = 10;
int n = m++;
System.out.println(m); //11
System.out.println(n); //10
System.out.println("---------------------案例(参考了解)-----------------------");
int k = 3;
int p = 5;
int rs = k++ + ++k - --p + p-- - k-- + ++p + 2;
System.out.println(k); //4
System.out.println(p); //4
System.out.println(rs); //9
}
}
4.赋值运算符
package com.pikaqiu.operator;
public class OperatorDemo5 {
public static void main(String[] args) {
int a = 10;
int b = 200;
a += b; //a = (int) (a + b);
System.out.println(a); //210
byte i = 10;
byte j = 20;
i += j; // i = (byte) (i + j);
System.out.println(i); //30
int m = 10;
int n = 5;
// m -= n; // m = (int) (m - n);
// m *= n; // m = (int) (m * n);
// m /= n; // m = (int) (m / n);
m %= n; // m = (int) (m % n);
System.out.println(m); //0
}
}
5.关系运算符
定义:是对数据进行条件判断的符号,最终会返回一个比较的布尔结果(true,false)
注意:在做相等判断时,千万不要把==写成=
package com.pikaqiu.operator;
public class OperatorDemo6 {
public static void main(String[] args) {
int a = 10;
int b = 10;
boolean rs = a == b;
System.out.println(rs);
System.out.println(a == b); //true
System.out.println(a != b); //false
System.out.println(a > b); //false
System.out.println(a >= b); //true
System.out.println(a < b); //false
System.out.println(a <= b); //true
System.out.println(i = j); //5,相等判断必须是==,如果使用=是在赋值
}
}
6.逻辑运算符
定义:可以把多个条件的布尔结果放在一起运算,最终返回一个布尔结果
注意:逻辑与"&"、逻辑或"|" : 无论左边是false还是true,右边都要执行
package com.pikaqiu.operator;
public class OperatorDemo7 {
public static void main(String[] args) {
double size = 9.8;
double storage = 6;
//需求:尺寸大于等于6.95,内存要大于等于8GB
//逻辑与:必须都为true结果才是true
System.out.println(size > 6.95 & storage > 8); //false
//需求:要么尺寸大于等于6.95,要么内存要大于等于8GB
//逻辑或:有一个为true结果就是true
System.out.println(size > 6.95 | storage > 8); //true
//逻辑非
System.out.println(!true); //false
System.out.println(!false); //true
//逻辑异或
//相同为假,不同为真
System.out.println(false ^ true); //true
System.out.println(true ^ true); //false
System.out.println("--------------------&&、&、|、||的区别--------------------");
int a = 10;
int b = 20;
int i = 10;
int j = 20;
//&&当判断前面的为假时,后面的不执行 ; ||当判断前面为真时,后面的不执行
System.out.println(a > 100 && ++b > 10);
System.out.println(b); //此时b=20
System.out.println(a > 100 & ++b > 10);
System.out.println(b); //此时b=21
System.out.println(i > 2 || ++j > 10);
System.out.println(j); //此时j=20
System.out.println(i > 2 | ++j > 10);
System.out.println(j); //此时j=21
}
}
7.三元运算符
三元运算符格式:表达式条件 ? 值1 : 值2;
执行过程:首先计算表达式的值,如果值为true,返回值1;如果值为false,返回值2
package com.pikaqiu.operator;
public class OperatorDemo8 {
public static void main(String[] args) {
double score = 98;
String rs = score >= 60 ? "考试通过" : "挂科";
System.out.println(rs);
//需求:从两个整数中找出较大值
int a = 10;
int b = 200;
int max = a > b ? a : b;
System.out.println(max);
System.out.println("------------------求三个整数的最大值------------------");
int i = 10;
int j = 20;
int k = 30;
//1.找出两个整数的较大值
int temp = i > j ? i : j;
//2.拿临时变量与第三个变量比较,得出最大值
int max2 = k > temp ? k : temp;
System.out.println(max2);
System.out.println("------------------拓展知识------------------");
int max3 = i > j ? (i > k ? i : k) : (j > k ? j : k);
System.out.println(max3);
}
}
8.运算符优先级
定义:在表达式中,哪个运算符先执行后执行是要看优先级的,例如"/"的优先级高于"+"
package com.pikaqiu.operator;
public class OperatorDemo9 {
public static void main(String[] args) {
//&&优先级大于||
System.out.println(10 > 3 || 10 > 3 && 10 < 3); //true
System.out.println((10 > 3 || 10 > 3) && 10 < 3); //false
}
}
9.案例:键盘录入技术
API是什么:应用程序接口;Java写好的程序,我们可以直接调用
package com.pikaqiu.scanner;
import java.util.Scanner;
//1.导包操作(并不需要自己写,以后通过工具进行导入更加方便)
//import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args){
//2.得到一个键盘扫描器对象
Scanner sc = new Scanner(System.in);
//3.调用sc对象的功能等待接收用户输入的数据
System.out.println("请输入您的年龄: ");
//这个代码会等待用户输入数据,直到用户输入完数据并按了回车键就会把数据拿到
int age = sc.nextInt();
System.out.println("您的年龄是: " + age);
System.out.println("请输入您的姓名: ");
String name = sc.next();
System.out.println("欢迎: " + name);
}
}