一、数据类型的转换
1.隐式转换
/*
数据类型转换-隐式转换
byte short int long float double char boolean
数据类型隐式提升的规则
byte/short/char --> int --> long --> float --> double
*/
public class Demo01DataType {
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
//求和的动作
int sum = num1 + num2;
System.out.println(sum);
System.out.println("========================");
byte b1 = 10;
int i2 = 20;
//求和动作
int sum2 = b1 + i2;
System.out.println(sum2);
System.out.println("========================");
byte by1 = 20;
byte by2 = 20;
//求和动作
int sum3 = by1 + by2;
System.out.println(sum3);
}
}
2.强制转换
/*
数据类型转换-强制转换
使用的场景:
当我们要将大的数据类型赋值给较小的数据类型的时候
强制转换格式:
数据类型 变量名 = (目标数据类型)(变量值);
数据类型隐式提升的规则
byte/short/char --> int --> long --> float --> double
*/
public class Demo02DataType {
public static void main(String[] args) {
byte num1 = 10;
int num2 = 20;
//求和动作
byte sum = (byte)(num1 + num2);
System.out.println(sum);
System.out.println("====================");
int i1 = 20;
short s2 = 20;
//求和
short sum2 = (short)(i1 + s2);
System.out.println(sum2);
}
}
3.java语言的两种优化机制
byte、short、char 如果你的赋值的结果没有超过取值范围,那么可以直接进行赋值
常量优化机制:如果我们参与运算的全都是常量,那么编译器会直接进行运算得到结果。
如果结果没有超过左边数据类型的范围,那么就会直接进行赋值
如果结果超过了左边数据类型的范围,那么就报错
例如: byte sum1 = 5 + 5;
byte sum2 = 200 + 100;
4.编码表
ASCII码表:小的编码表
unicode码表:万国表
'a' 97
'0' 48
'A' 65
二、运算符
算数运算符 赋值运算符 比较运算符 逻辑运算符 三元运算符
1.算数运算符
+:加法
-:减法
*:乘法
/:除法 (整数相除,结果只能是整数)(如果想得到小数的结果,只需要将其中之一的变量改成小数类型)
%:取余数 (整数相除,才能得到余数)
示例代码:
class Demo02Operator {
public static void main(String[] args) {
//加法
System.out.println(5 + 5); // 10
//减法
System.out.println(10 - 2); // 8
//乘法
System.out.println(5 * 6); // 30
//除法
System.out.println(10 / 3); // 3
//取余
System.out.println(10 % 3); // 1
//字符和+号进行连接。将字符对应的码表值参与运算
char ch1 = 'a'; // 'a' 97
System.out.println(ch1 + 1); // 98
//字符串和+号进行连接。任何数据和字符串进行相连接,都会产生一个新的字符串
System.out.println("5+5=" + 5 + 5); // 5+5=55
System.out.println(5 + 5 + "=5+5"); // 10=5+5
System.out.println("5+5=" + (5+5)); // 5+5=10
System.out.println("=====================");
int num1 = 10;
int num2 = 20;
int sum = num1 + num2; // 30
// 10 + 20 的和是:30
System.out.println(num1 + "+" + num2 +"的和是:" + sum);
}
}
++:将变量进行自增
--:将变量进行自减
第一种情况:单独使用。++或者--放在变量的前面或者是后面。没有区别,都是将原值进行自增或者自减
第二种情况:参与运算使用
A:如果++或者--放在变量的前面,先将变量进行自增或者自减。然后再参与运算
B:如果++或者--放在变量的后面,先将变量原值拿出来使用。然后再自增或者自减
示例代码:
class Test02 {
public static void main(String[] args) {
//单独使用 也是最常用的
int num1 = 10;
num1++;
System.out.println(num1); // 11
int num2 = 20;
--num2;
System.out.println(num2); // 19
System.out.println("==============");
//参与运算
int i1 = 10; // 11
int i2 = 20; // 19
// sum1 = 10 + 19
int sum1 = i1++ + --i2;
System.out.println(sum1); // 29
System.out.println(i1); // 11
System.out.println(i2); // 19
}
}
练习题目:
/*
需求:
有一个数字:123
获取这个数字的个位、十位、百位数各自是多少
个位数是3
十位数是2
百位数是1
*/
class Test01{
public static void main(String[] args) {
int num = 123;
// 123 % 10 = 3
int ge = num % 10;
// 123 / 10 % 10 = 2
int shi = num / 10 % 10;
// 123 / 10 / 10 % 10
int bai = num / 10 / 10 % 10;
System.out.println("个位数是:" + ge);
System.out.println("十位数是:" + shi);
System.out.println("百位数是:" + bai);
}
}
2.赋值运算符
=:将等号右边的值赋值给等号左边的变量
+= a += 3 相当于 a = a + 3
-= b -= 4 相当于 b = b - 4
*= c *= 5 相当于 c = c * 5
/= d /= 6 相当于 d = d / 6
%= e %= 7 相当于 e = e % 7
扩展的赋值运算符注意事项:会自动类型转换
例如:
//错误的写法
byte num1 = 10;
num1 = num1 + 5;
System.out.println(num1);
//扩展赋值运算符
byte num1 = 10;
// num1 += 5 等效于 num1 = (byte)(num1 + 5)
num1 += 5;
System.out.println(num1);
3.比较运算符
/*
比较运算符:
大于: >
小于: <
大于等于: >=
小于等于: <=
相等: == 【两个等号连写才是相等,一个等号代表的是赋值】
不相等: !=
注意事项:
1. 比较运算符的结果一定是一个boolean值,成立就是true,不成立就是false
2. 如果进行多次判断,不能连着写。
数学当中的写法,例如:1 < x < 3
程序当中【不允许】这种写法。
*/
public class Demo08Operator {
public static void main(String[] args) {
System.out.println(10 > 5); // true
int num1 = 10;
int num2 = 12;
System.out.println(num1 < num2); // true
System.out.println(num2 >= 100); // false
System.out.println(num2 <= 100); // true
System.out.println(num2 <= 12); // true
System.out.println("===============");
System.out.println(10 == 10); // true
System.out.println(20 != 25); // true
System.out.println(20 != 20); // false
int x = 2;
// System.out.println(1 < x < 3); // 错误写法!编译报错!不能连着写。
}
}
4.逻辑运算符
&&:并且 有false则整个结果都是false 必须全部都是true,整个结果才是true
||:或者 有true则整个结果都是true。
!:取反 非true则false 非false则true。
示例代码:
public class Test03 {
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
// && 并且 如果左边是false,右边就不再执行了
// false &&
//boolean flag = ((num1++ + 10 < 20) && (num2++ + 5 > 5));
//System.out.println(flag); // false
//System.out.println(num1); // 11
//System.out.println(num2); // 20
// || 或者 如果左边是true,右边就不再执行了
// flag2 = true ||
boolean flag2 = ((++num1 + 5 >= 10) || (--num2 + 6 < 20));
System.out.println(flag2); // true
System.out.println(num1); // 11
System.out.println(num2); // 20
// ! 取反
System.out.println(!(true && false)); // true
System.out.println(!true && false); // false
}
}
5.三元运算符
定义格式:
数据类型 变量名 = 比较表达式 ? 表达式A : 表达式B;
执行流程:
先判断比较表达式,如果是true。那么将表达式A进行赋值
如果是false。那么将表达式B进行赋值
示例代码:
public class Test04 {
public static void main(String[] args) {
//需求一:获取两个数据中的较大值
int num1 = 10;
int num2 = 20;
int max = num1 > num2 ? num1 : num2;
System.out.println("最大值:" + max);
System.out.println("==================");
//需求二:获取三个数据中的较大值
int i1 = 10;
int i2 = 30;
int i3 = 20;
//先获取前两个数的较大值
int temp = i1 > i2 ? i1 : i2;
//使用前两个数中的较大值和第三个数进行比较
int max2 = temp > i3 ? temp : i3;
System.out.println("最大值:" + max2);
System.out.println("==================");
//需求三:定义一个成绩65分。如果成绩大于等于60分。输出一个"及格" 否则 输出"不及格"
int score = 58;
String result = score >= 60 ? "及格" : "不及格";
System.out.println(result);
}
}
三、方法
1.什么是方法
就是指可以完成特定功能的一段代码块
2.方法的作用
A:可以提高代码的阅读性
B:可以提高代码的复用性
3.方法的定义格式
public static void 方法名() {
方法体; // 就是你要执行的代码
}
4.示例代码:
public class Demo11Method {
public static void main(String[] args) {
farmer(); // 调用农民的方法
seller(); // 调用小商贩的方法
cook(); // 调用厨子的方法
me(); // 调用我自己的方法
}
// 厨子
public static void cook() {
System.out.println("洗菜");
System.out.println("切菜");
System.out.println("炒菜");
System.out.println("装盘");
}
// 我
public static void me() {
System.out.println("吃");
}
// 小商贩
public static void seller() {
System.out.println("运输到农贸市场");
System.out.println("抬高价格");
System.out.println("吆喝");
System.out.println("卖给厨子");
}
// 农民伯伯
public static void farmer() {
System.out.println("播种");
System.out.println("浇水");
System.out.println("施肥");
System.out.println("除虫");
System.out.println("收割");
System.out.println("卖给小商贩");
}
}
5.示例代码2:
/*
模拟植物大战僵尸
将发射炮弹这一步骤进行抽取
把它抽取成方法
*/
public class Test05 {
public static void main(String[] args) {
System.out.println("一大波僵尸来了~~~");
fire();
System.out.println("一大波僵尸来了~~~");
fire();
System.out.println("一大波僵尸来了~~~");
fire();
}
public static void fire() {
System.out.println("Biu~");
System.out.println("Biu~");
System.out.println("Biu~");
System.out.println("发射炮弹!");
}
}
四、JDK9版本的新特性
JShell的基本使用:
打开命令行,输入:jshell
就可以书写简单的java代码了
五、键盘录入
/*
键盘录入:
1.导包 : import java.util.Scanner;
2.创建对象 : Scanner sc = new Scanner(System.in);
3.调用方法 :
输入整数的方法:sc.nextInt();
输入小数的方法:sc.nextDouble();
输入字符串的方法: sc.nextLine();
*/
import java.util.Scanner;
public class Test06{
public static void main(String[] args) {
//第二步:创建键盘录入对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
//接收一个整数
//int num = sc.nextInt();
//接收一个小数
//double num = sc.nextDouble();
//接收一个字符串
String s = sc.nextLine();
//输出
System.out.println(s);
}
}