运算符的优先级
=优先级最低
单目算数位关系,逻辑三目后赋值
&&优先级高于||
int a = 5;
int b = 10;
boolean x = a < b ?( a++ * 2 > b || a > b ):( a < b);
System.out.println(x); //F
System.out.println(a); //6
System.out.println(b); //10
//&&优先级高于||
System.out.println(false && true || true); //true
System.out.println(true || true && false); //true
基本数据类型:
基本数据类型 变量名 = 赋值;
int i = 1;
引用数据类型:
1.导包 : 指明当前引用数据类型类的位置
import 包名.类名;
位置: 类的上面
2.创建当前引用数据类型的一个变量|引用
引用数据类型 变量名 = new 引用数据类型();
3.根据引用使用功能
引用名.功能名字();
Scanner 接收用户键盘输入的内容
1.导包
import java.util.Scanner;
2.创建Scanner类型的一个变量|引用
Scanner sc = new Scanner(System.in);
3.使用功能
sc.功能名字();
sc.nextInt(); 接收用户键盘输入的int类型的数据
sc.nextByte(); 接收用户键盘输入的byte类型的数据
sc.nextShort(); 接收用户键盘输入的short类型的数据
sc.nextLong(); 接收用户键盘输入的long类型的数据
sc.nextFloat(); 接收用户键盘输入的float类型的数据
sc.nextDouble(); 接收用户键盘输入的double类型的数据
字符串
sc.next(); 接收用户输入的字符串
从有效字符开始接收(非空格),知道遇到enter才能结束功能,但是接收过程中如 果遇到空格,就停止接收,但是功能不会结束
sc.nextLine(); 接收用户输入的一整行字符串
从任意字符开始接收,如果接收的内容为enter结束功能
如果nextLine功能的上面有使用到系列next功能,需要处理遗留enter问 题sc.nextLine();
4.关闭
sc.close(); 使用当前类中完全使用完毕之后进行关闭,以便于回收资源
import java.util.Scanner;
public class Class001_Scanner{
public static void main(String[] args){
//1.导包
//2.创建Scanner类型的一个变量|引用
Scanner sc = new Scanner(System.in);
//3.使用功能
//接收int类型整数
System.out.println("请输入年龄:");
int age = sc.nextInt();
System.out.println(age);
System.out.println("请输入月薪:");
double sal = sc.nextDouble();
System.out.println(sal);
//字符串
System.out.println("请输入姓名:");
String name = sc.next();
System.out.println(name);
//处理遗留的enter问题
sc.nextLine();
System.out.println("请输入学校名字:");
String schoolName = sc.nextLine();
System.out.println(schoolName);
//关闭
sc.close();
Random : 产生随机数
nextInt() 产生int范围内随机整数
Eg: //1.导包
//2.创建Random类型的引用
Random ran = new Random();
//3.生成int范围的随机整数
int num1 = ran.nextInt();
System.out.println(num1);
nextInt(整数n) 产生int类型的[0,n)整数
Eg: //[0,5)
int num2 = ran.nextInt(5);
System.out.println(num2);
nextDouble() 产生一个double类型 的随机小数-->[0.0,1.0)
Eg: //[0.0,1.0)
System.out.println(ran.nextDouble());
System.out.println(ran.nextDouble());
System.out.println(ran.nextDouble());
System.out.println(ran.nextDouble());
总结公式:
产生某一个范围内的随机 整数
1. [0,max] ran.nextInt(max+1)
2. [min,max]
ran.nextInt(max+1) -->[0,max] + min
ran.nextInt(max+1)+min -->[0,max] + min --> [min,max+min]
ran.nextInt(max-min+1)+min -->[0,max-min] +min --> [min,max]
Eg: //[5,10]
System.out.println(ran.nextInt(10-5+1)+5);
System.out.println(ran.nextInt(10-5+1)+5);
System.out.println(ran.nextInt(10-5+1)+5);
System.out.println(ran.nextInt(10-5+1)+5);
3.[min,max)
ran.nextInt(max-min)+min -->[0,max-min)+min-->[min,max)
Eg: [0,4)
System.out.println(ran.nextInt(4-0)+0);[0,4-0)+0
伪随机数: 没有真实达到完全随机
流程控制语句
顺序结构 : 从上到下,从左到右-->默认
选择结构 : 满足条件执行对应的代码
循环结构 : 让一些代码重复不停的执行多次
选择结构:
if 区间判断|定值判断
switch 定值判断
能用switch的都能if,能用if不一定能够使用switch
if
单选泽|单分支\
if(条件表达式){
满足条件执行的代码段
}
条件表达式 : 必须为一个值为boolean的表达式
执行流程:
1.计算条件表达式
2.如果结果为true,执行{}中的语句体
3.如果结果为false,就直接跳过if结构
Eg int i = -1;
System.out.println("if开始了");
if(i==0){
System.out.println("i=0");
}
System.out.println("if结束了");
双选择|双分支
if(条件表达式){
满足条件执行的代码段;
}else{
不满足条件执行的代码段;
}
注意: 双选择一定能够执行语句体|一定能够得到结果
if(i>0){
System.out.println("i>0");
}else{
System.out.println("i<=0");
}
多选择|多分支
if(条件表达式1){
满足条件表达式1执行的语句体1;
}else if(条件表达式2){
满足条件表达式2执行的语句体2;
}else if(条件表达式3){
满足条件表达式3执行的语句体3;
}.....
else{ -->接盘侠
如果以上都不满足执行得到语句体n;
}
if(i==0)
System.out.println("i=0");
else if(i<0)
System.out.println("i<0");
else{
System.out.println("i>0");
System.out.println("测试是否能够被if语句体结构控制");
}
注意: 当{}中的语句体只有一句,前后的{}可以省略
if 与 条件运算符之间的区别:
能够使用条件运算符的都可以使用if语句
if是一个语法结构,条件运算符是运算符
条件运算符编写更简洁,性能更高,结构简单,但是if更强大
条件运算符必须得到一个结果的,但是if语句可以没有结果(单选择)
if语句可以根据不同 的选择判断,决定执行对应的语句体结构,而条件运算符只能 存在一个条件
建议: 如果结构简单,能够使用条件运算符就使用条件运算符,否则就使用if语句
switch 定值判断
能用if的不一定能用switch,能用switch都能使用if
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
....
default:
语句体n;
break;
}
表达式 : 一般为一个变量,可以为一个表达式,常量都可以
结果数据类型要求: byte,short,int,char,枚举类型(jdk5),String字符串(jdk7)
case : 后面接一个定值,拿到表达式的结果与case后面的定值进行判断是否相等,相等执 行对应的语句体,不相等,继续向下判断
从上到下一次判断
break : 终止当前的switch语句
如果没有break会发生case穿透 : 从当前满足条件的语句体开始执行,一直向下 穿透,无论下面的case是否满足条件都不再判断,直接执行语句体,直到遇到下一个 break或者switch语句的结束而结束
default : 与else相同
以上的case都不满足,name就执行default中的内容
位置可以在switch语句中的任意位置
一般定义在switch语句的最后,如果切换位置,注意break定义
//信号灯
String flag = "粉灯";
switch(flag){
case "红灯":
System.out.println("红灯停");
break;
case "绿灯":
System.out.println("绿灯行");
break;
case "黄灯":
System.out.println("黄灯等一等");
break;
default:
System.out.println("你是不是色弱!!!!");
break;
}
//case穿透
switch(flag){
case "红灯":
System.out.println("红灯停");
case "绿灯":
System.out.println("绿灯行");
case "黄灯":
System.out.println("黄灯等一等");
break;
default:
System.out.println("你是不是色弱!!!!");
break;
}
循环结构: 让一些重复执行多次
for循环 次数循环
while循环 条件循环
do..while循环
都可以互相转换
for循环
for(条件初始化;条件判断;条件变化 ){
重复执行的语句体;
}
条件初始化 : 声明一个变量i并且第一次赋值 -->i条件
条件判断 : 对变量的i判断
决定循环是否结束
条件变化|迭代因子 : 变量i自身值的改变
执行顺序:
1.条件初始化 i
2.条件判断,满足执行语句体,不满足条件,结束循环
3.条件变化
从第二次循环开始,重复执行2,3步骤
注意:
for循环的变量条件i只属于当前 for循环,只能在循环中使用
for可以通过条件的变化控制循环的次数,循环体中可以使用条件的值, 条件变量可以按照想要的逻辑进行变化,实现需求
考虑: 是否存在一些代码重复执行,如果是,规律可循,可以选择使用循 环结构
如果循环体语句只有一句,前后的{}可以省略
Eg //求1-100的和,求1-100的偶数和,求1-100的奇数和
int sum1=0;
int sum2=0;
int sum3=0;
for(int i=1;i<=100;i++){
sum1+=i;
}
System.out.println(sum1);
for (int i = 2; i<= 100; i += 2) {
sum2 += i;
}
System.out.println("1到100的偶数和为:" + sum2);
for (int i = 1; i <= 100; i += 2) {
sum3 += i;
}
System.out.println("1到100的奇数和为:" + sum3);
//1-50当中能被4整除的数的和
int sum=0;
for (int i=1; i<=50; i++){
if(i%4==0){
sum += i;
}
}
System.out.println("1-50当中能被4整除的数的和为:"+sum);
//求出 1-100当中既能被3整除又能被5整除还能被2整除的和,
sum=0;
for (int i=1; i<=100; i++){
if(i%3==0&&i%5==0&&i%2==0){
sum += i;
}
}
System.out.println("1-100当中既能被3整除又能被5整除还能被2整 除的和为:"+sum);
//求出 1-100当中能被3整除或者能被5整除或者能被2整除的和
sum=0;
for (int i=1; i<=100; i++){
if(i%3==0||i%5==0||i%2==0){
sum += i;
}
}
System.out.println("1-100当中能被3整除或者能被5整除或者能被2 整除的和为:"+sum);
//求5的阶乘 5! 5*4*3*2*1
int r=1;
for(int i=5;i>=1;i--){
r*=i;
}
System.out.println(r);