前言
Java基础语法㈠学习通道
一、运算符
①运算符和表达式
运算符:对常量或者变量进行操作的符号 表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。
int a = 10;
int b = 20;
int c = a + b;
②算术运算符
注意: ①/和%的区别:两个数据做除法,/取结果的商,%取结果的余数。 ②整数操作只能得到整数,要想得到小数,必须有浮点数参与运算。
public class OperatorDemo01 {
public static void main(String[] args) {
int a = 6;
int b = 4;
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(6.0 / 4);
}
}
③字符"+"操作
public class OperatorDemo02 {
public static void main(String[] args) {
int i = 10;
char c = 'A';
c = 'a';
c = '0';
System.out.println(i + c);
int j = i + c;
System.out.println(j);
double d = 10 + 13.14;
System.out.println("it" + "heima");
System.out.println("itheima" + 666);
System.out.println(666 + "itheima");
System.out.println("黑马" + 6 + 66);
System.out.println(1 + 99 + "年黑马");
}
}
④ 赋值运算符
public class OperatorDemo {
public static void main(String[] args) {
int i = 10;
System.out.println("i:" + i);
i += 20;
System.out.println("i:" + i);
short s = 10;
s += 20;
System.out.println("s:" + s);
}
}
注意: 扩展的赋值运算符隐含了强制类型转换。
short s = 10;
s = s + 10;
s += 10;
⑤自增自减运算符
public class OperatorDemo {
public static void main(String[] args) {
int i = 10;
System.out.println("i:" + i);
int j = ++i;
System.out.println("i:" + i);
System.out.println("j:" + j);
int x = 10;
int y = x++;
System.out.println("x:" + x + ", y:" + y);
int m = 10; int n = ++m;
System.out.println("m:" + m + ", m:" + m);
}
}
⑥关系运算符
public class OperatorDemo {
public static void main(String[] args) {
int i = 10;
int j = 20;
int k = 10;
System.out.println(i == j);
System.out.println(i == k);
System.out.println("--------");
System.out.println(i != j);
System.out.println(i != k);
System.out.println("--------");
System.out.println(i > j);
System.out.println(i > k);
System.out.println("--------");
System.out.println(i >= j);
System.out.println(i >= k);
System.out.println("--------");
System.out.println(i = j);
}
}
⑦逻辑运算符
逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false。
public class OperatorDemo01 {
public static void main(String[] args) {
int i = 10;
int j = 20;
int k = 30;
System.out.println((i > j) & (i > k));
System.out.println((i < j) & (i > k));
System.out.println((i > j) & (i < k));
System.out.println((i < j) & (i < k));
System.out.println("--------");
System.out.println((i > j) | (i > k));
System.out.println((i < j) | (i > k));
System.out.println((i > j) | (i < k));
System.out.println((i < j) | (i < k));
System.out.println("--------");
System.out.println((i > j) ^ (i > k));
System.out.println((i < j) ^ (i > k));
System.out.println((i > j) ^ (i < k));
System.out.println((i < j) ^ (i < k));
System.out.println("--------");
System.out.println((i > j));
System.out.println(!(i > j));
System.out.println(!!(i > j));
System.out.println(!!!(i > j));
}
}
短路逻辑运算符:
public class OperatorDemo02 {
public static void main(String[] args) {
int i = 10;
int j = 20;
int k = 30;
System.out.println((i > j) && (i > k));
System.out.println((i < j) && (i > k));
System.out.println((i > j) && (i < k));
System.out.println((i < j) && (i < k));
System.out.println("--------");
System.out.println((i > j) || (i > k));
System.out.println((i < j) || (i > k));
System.out.println((i > j) || (i < k));
System.out.println((i < j) || (i < k));
System.out.println("--------");
System.out.println((i++ > 100) && (j++ > 100));
System.out.println("i:" + i);
System.out.println("j:" + j);
}
}
⑧三元运算符
三元运算符语法格式: 关系表达式 ? 表达式1 : 表达式2; 解释:问号前面的位置是判断的条件,判断结果为boolean型,为true时调用表达式1,为false时调用表达式2。其逻辑为:如果条件表达式成立或者满足则执行表达式1,否则执行第二个。
int a = 10;
int b = 20;
int c = a > b ? a : b;
需求:动物园里有两只老虎,已知两只老虎的体重分别为180kg、200kg,请用程序实现判断两只老虎的体重是否相同。
public class OperatorTest01 {
public static void main(String[] args) {
int weight1 = 180;
int weight2 = 200;
boolean b = weight1 == weight2 ? true : false;
System.out.println("b:" + b);
}
}
需求:一座寺庙里住着三个和尚,已知他们的身高分别为150cm、210cm、165cm,请用程序实现获取这三个和尚的最高身高。
public class OperatorTest02 {
public static void main(String[] args) {
int height1 = 150;
int height2 = 210;
int height3 = 165;
int tempHeight = height1 > height2 ? height1 : height2;
int maxHeight = tempHeight > height3 ? tempHeight : height3;
System.out.println("maxHeight:" + maxHeight);
}
}
二、数据输入
我们可以通过 Scanner 类来获取用户的输入。
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
System.out.println("x:" + x);
}
}
需求:一座寺庙里住着三个和尚,他们的身高必须经过测量得出,请用程序实现获取这三个和尚的最高身高。
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个和尚的身高:");
int height1 = sc.nextInt();
System.out.println("请输入第二个和尚的身高:");
int height2 = sc.nextInt();
System.out.println("请输入第三个和尚的身高:");
int height3 = sc.nextInt();
int tempHeight = height1 > height2 ? height1 : height2;
int maxHeight = tempHeight > height3 ? tempHeight : height3;
System.out.println("这三个和尚中身高最高的是:" + maxHeight +"cm");
}
}
三、流程控制语句
if结构
if语句格式1 执行流程: ①首先计算关系表达式的值 ②如果关系表达式的值为true就执行语句体 ③如果关系表达式的值为false就不执行语句体 ④继续执行后面的语句内容
public class IfDemo {
public static void main(String[] args) {
System.out.println("开始");
int a = 10;
int b = 20;
if(a == b) {
System.out.println("a等于b");
}
int c = 10;
if(a == c) {
System.out.println("a等于c");
}
System.out.println("结束");
}
}
if语句格式2 执行流程: ①首先计算关系表达式的值 ②如果关系表达式的值为true就执行语句体1 ③如果关系表达式的值为false就执行语句体2 ④继续执行后面的语句内容
public class IfDemo02 {
public static void main(String[] args) {
System.out.println("开始");
int a = 10;
int b = 20;
b = 5;
if(a > b) {
System.out.println("a的值大于b");
} else {
System.out.println("a的值不大于b");
}
System.out.println("结束");
}
}
if语句案例:奇偶数 需求:任意给出一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数。 分析: ①为了体现任意给出一个整数,采用键盘录入一个数据 ②判断整数是偶数还是奇数要分两种情况进行判断,使用if…else结构 ③判断是否偶数需要使用取余运算符实现该功能 number % 2 == 0 ④根据判定情况,在控制台输出对应的内容
import java.util.Scanner;
public class IfTest01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
int number = sc.nextInt();
if(number%2 == 0) {
System.out.println(number + "是偶数");
} else {
System.out.println(number + "是奇数");
}
}
}
if语句格式3 执行流程: ①首先计算关系表达式1的值 ②如果值为true就执行语句体1;如果值为false就计算关系表达式2的值 ③如果值为true就执行语句体2;如果值为false就计算关系表达式3的值 ④… ⑤如果没有任何关系表达式为true,就执行语句体n+1。
import java.util.Scanner;
public class IfDemo03 {
public static void main(String[] args) {
System.out.println("开始");
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个星期数(1-7):");
int week = sc.nextInt();
if(week<0 || week>7){
if(week == 1) {
System.out.println("星期一");
} else if(week == 2) {
System.out.println("星期二");
} else if(week == 3) {
System.out.println("星期三");
} else if(week == 4) {
System.out.println("星期四");
} else if(week == 5) {
System.out.println("星期五");
} else if(week == 6) {
System.out.println("星期六");
} else {
System.out.println("星期日");
}
}
System.out.println("结束");
}
}
if语句格式3案例: 需求:小明快要期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物,假如你可以控制小明 的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。 分析: ①小明的考试成绩未知,可以使用键盘录入的方式获取值 ②由于奖励种类较多,属于多种判断,采用if…else…if格式实现 ③为每种判断设置对应的条件 ④为每种判断设置对应的奖励
import java.util.Scanner;
public class IfTest02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个分数:");
int score = sc.nextInt();
if(score>100 || score<0) {
System.out.println("你输入的分数有误");
} else if(score>=95 && score<=100) {
System.out.println("山地自行车一辆");
} else if(score>=90 && score<=94) {
System.out.println("游乐场玩一次");
} else if(score>=80 && score<=89) {
System.out.println("变形金刚玩具一个");
} else {
System.out.println("胖揍一顿");
}
}
}
四、switch语句
import java.util.Scanner;
public class SwitchDemo {
public static void main(String[] args) {
System.out.println("开始");
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个星期数(1-7):");
int week = sc.nextInt();
switch(week) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("你输入的星期数有误");
break;
}
System.out.println("结束");
}
}
需求:一年有12个月,分属于春夏秋冬4个季节,键盘录入一个月份,请用程序实现判断该月份属于哪个季节,并输出。 春:3、4、5 夏:6、7、8 秋:9、10、11 冬:1、2、12
import java.util.Scanner;
public class SwitchTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个月份:");
int month = sc.nextInt();
switch(month) {
case 1:
case 2:
case 12:
System.out.println("冬季");
break;
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
default:
System.out.println("你输入的月份有误");
}
}
}
五、循环
①for循环
public class ForDemo {
public static void main(String[] args) {
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("--------");
for(int i=1; i<=5; i++) {
System.out.println("HelloWorld");
}
}
}
需求:求1-5之间的数据和,并把求和结果在控制台输出
public class ForTest02 {
public static void main(String[] args) {
int sum = 0;
for(int i=1; i<=5; i++) {
sum += i;
}
System.out.println("1-5之间的数据和是:" + sum);
}
}
需求:求1-100之间的偶数和,并把求和结果在控制台输出
public class ForTest03 {
public static void main(String[] args) {
int sum = 0;
for(int i=1; i<=100; i++) {
if(i%2 == 0) {
sum += i;
}
}
System.out.println("1-100之间的偶数和是:" + sum);
}
}
需求:在控制台输出100-1000中所有的“水仙花数”(水仙花数,指的是一个三位数,个位、十位、百位的数字立方和等于原数)
public class ForTest04 {
public static void main(String[] args) {
for(int i=100; i<1000; i++) {
int ge = i%10;
int shi = i/10%10;
int bai = i/10/10%10;
if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i) {
System.out.println(i);
}
}
}
}
需求:统计100-100中“水仙花数”一共有多少个,并在控制台输出个数
public class ForTest05 {
public static void main(String[] args) {
int count = 0;
for(int i=100; i<1000; i++) {
int ge = i%10;
int shi = i/10%10;
int bai = i/10/10%10;
if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i) {
count++;
}
}
System.out.println("水仙花共有:" + count + "个");
}
}
②while循环
public class WhileDemo {
public static void main(String[] args) {
for(int i=1; i<=5; i++) {
System.out.println("HelloWorld");
}
System.out.println("--------");
int j = 1;
while(j<=5) {
System.out.println("HelloWorld");
j++;
}
}
}
需求:世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度?
public class WhileTest {
public static void main(String[] args) {
int count = 0;
double paper = 0.1;
int zf = 8844430;
while(paper <= zf) {
paper *= 2;
count++;
}
System.out.println("需要折叠:" + count + "次");
}
}
③do…while循环
public class DoWhileDemo {
public static void main(String[] args) {
for(int i=1; i<=5; i++) {
System.out.println("HelloWorld");
}
System.out.println("--------");
int j = 1;
do {
System.out.println("HelloWorld");
j++;
}while(j<=5);
}
}
三种循环的区别:
死循环(无限循环)的三种格式
public class LoopTest {
public static void main(String[] args) {
do {
System.out.println("do...while");
}while(true);
}
}
④跳转控制语句
public class ControlDemo {
public static void main(String[] args) {
for(int i = 1; i<=5; i++) {
if(i%2 == 0) {
break;
}
System.out.println(i);
}
}
}
六、Random
Random类似Scanner,也是Java提供好的API,内部提供了产生随机数的功能
import java.util.Random;
public class RandomDemo {
public static void main(String[] args) {
Random r = new Random();
for(int i=0; i<10; i++) {
int number = r.nextInt(10);
System.out.println("number:" + number);
}
int x = r.nextInt(100) + 1;
System.out.println(x);
}
}
需求:程序自动生成一个1-100之间的数字,使用程序实现猜出这个数字是多少? 当猜错的时候根据不同情况给出相应的提示 A. 如果猜的数字比真实数字大,提示你猜的数据大了 B. 如果猜的数字比真实数字小,提示你猜的数据小了 C. 如果猜的数字与真实数字相等,提示恭喜你猜中了
import java.util.Random;
import java.util.Scanner;
public class RandomTest {
public static void main(String[] args) {
Random r = new Random();
int number = r.nextInt(100) + 1;
while(true) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要猜的数字:");
int guessNumber = sc.nextInt();
if(guessNumber > number) {
System.out.println("你猜的数字" + guessNumber + "大了");
} else if(guessNumber < number) {
System.out.println("你猜的数字" + guessNumber + "小了");
} else {
System.out.println("恭喜你猜中了");
break;
}
}
}
}
|