一,引用数据
1,如何应用数据
1)导包
指定要使用的引用数据类型的位置
import 包名.类名;
位置: 类的上面
2)创建引用数据类型的引用
引用数据类型 变量名|引用 = new 引用数据类型();
3)使用功能
引用.功能名字();
2,如何接收用户键盘输入的内容
Scanner :
1)导包: import java.util.Scanner; 2)创建一个Scanner类型的引用 Scanner sc = new Scanner(System.in); 3)使用功能 sc.nextInt() 接收用户键盘输入的int类型的数据 sc.nextByte() 接收用户键盘输入的byte类型的数据 sc.nextShort() 接收用户键盘输入的short类型的数据 sc.nextLong() 接收用户键盘输入的long类型的数据 sc.nextDouble() 接收用户键盘输入的double类型的数据 sc.nextFloat() 接收用户键盘输入的float类型的数据
sc.next() 接收用户收入的字符串类型的数据 从有效字符开始接收(非空格),遇到空格就停止接收,知道遇到enter功能结束 以上这些系列的next功能,都是从有效字符开始接收 sc.nextLine() 接收用户输入的一整行的数据,知道遇到enter结束 当nextLine功能的上面存在系列的next功能时候,注意处理之前的系列的next遗留的enter问题
import java.util.Scanner;
public class Class012_Scanner{
public static void main(String[] args){
//1)导包:
//2)创建一个Scanner类型的引用
Scanner sc = new Scanner(System.in);
//3)使用功能
int i = sc.nextInt();
System.out.println("用户输入的内容为 = "+i);
/*
byte b = sc.nextByte();
System.out.println("用户输入的内容为 = "+b);
System.out.println("请输入用户名:");
String name = sc.next();
System.out.println("用户输入的内容为 = "+name);
System.out.println(name.length());
*/
//处理遗留的enter问题
sc.nextLine();
String str = sc.nextLine();
System.out.println(str);
}
}
3,随机数
Random:
1.导包 import java.util.Random; 2.创建类型的引用 Random ran = new Random(); 3.使用功能 ran.nextInt() 生成一个int类型范围内的随机数 ran.nextInt(整数n) 生成一个 [0,n) 之间的随机整数 ran.nextDouble() 生成一个 double 类型的随机小数->[0.0,1.0)
总结公式:
[min,max) 随机整数 ran.nextInt(max-min)+min
ran.nextInt(max)->[0,max)
ran.nextInt(max)+min ->[0,max) + min -> [min,max+min)
ran.nextInt(max-min)+min ->[0,max-min) + min -> [min,max)
[min,max] 随机整数 ran.nextInt(max-min+1)+min
import java.util.Random;
public class Class013_Random{
public static void main(String[] args){
//1.导包
//2.创建类型的引用
Random ran = new Random();
int num1 = ran.nextInt();
System.out.println(num1);
//[1,5)
//System.out.println(ran.nextInt(5-1)+1);
//[3,5]
System.out.println(ran.nextInt(5-3+1)+3);
System.out.println(ran.nextInt(5-3+1)+3);
System.out.println(ran.nextInt(5-3+1)+3);
System.out.println(ran.nextInt(5-3+1)+3);
System.out.println(ran.nextDouble());
}
}
二,控制语句
java中的流程控制语句 顺序结构 : 从上到下,从左到右 选择结构|分支结构 : 满足条件才能执行一些代码 循环结构 : 让一些代码可以重复执行多次
1,if语句
单选泽|单分支
if(表达式){
语句体;
}
执行流程:
1.计算表达式,得到一个boolean结果
2.如果结果为true,执行{}中的语句体
3.如果结果为false,就不执行直接跳过if结构
双选择|双分支
if(表达式1){
语句体1;
}else{
语句体2;
}
执行流程:
1.计算表达式1,得到一个boolean结果
2.如果结果为true,执行{}中的语句体1
3.如果结果为false,执行{}中的语句体2
多选择|多分支
if(表达式1){
语句体1;
}else if(表达式2){
语句体2;
}else if(表达式3){
语句体3;
}....
else{
如果以上的if条件都不满足就执行这个语句体n
}
注意:
使用多选择与多个单选择之间区别 : 1)语义化结构 2)执行判断次数 3)执行语句体次数
当{}中的语句体只有一句时候,前后的{}可以省略
public class Class003_If{
public static void main(String[] args){
int money =-5;
//单选泽
if(money>0){
System.out.println("消费....");
}
if(false){
System.out.println("消费....");
}
//双选择
if(money>0){
System.out.println("消费....");
}else{
System.out.println("搞钱....");
}
//多选择
if(money==0)
System.out.println("快搞钱....");
else if(money<0)
System.out.println("搞钱还钱....");
else
System.out.println("大吃大喝....");
//多个单选泽
/*
if(money==0){
System.out.println("快搞钱....");
}
if(money<0){
System.out.println("搞钱还钱....");
}
if(money>0){
System.out.println("消费....");
}
*/
System.out.println("main方法结束....");
}
}
2,Switest语句
switch : 定值判断 switch(表达式){ case 值1: 语句体1; break; case 值2: 语句体2; break; case 值3: 语句体3; break; .... default: --> 接盘侠 语句体n; break; }
表达式 : 一般为一个 变量或者一个表达式
类型: byte,short,int,char,枚举(jdk5新增),String(jdk7)
case : 后面接一个定值,不能是区间,使用定值与表达式的结果进行判断,相等执行后面对应的语句体,不相等继续向下判断
break : 结束switch语句
防止case穿透问题
default : 默认的
如果以上的case后的值与表达式的结果都不相等时候,执行default后的代码
位置可变,可以在switch语句{}的任意位置
if与switch与条件运算符之间的区别:
条件运算符: 根据条件做判断 运算符 结构简单,受限制->判断条件单一,直接根据判断条件获取结果,肯定会得到一个结果
结构复杂使用if或者switch
if-> 定值判断,区间判断
switch->定值判断
能用switch的都能if,能用if不一定能用switch
建议: 简单合适结构可以条件运算符,复杂的,定值的可以使用switch->都可以使用if
public class Class005_Switch{
public static void main(String[] args){
String flag = "紫灯";
switch(flag){
case "红灯":
System.out.println("红灯停");
break;
case "绿灯":
System.out.println("绿灯行");
break;
case "黄灯":
System.out.println("黄灯等一等");
break;
default:
System.out.println("你四不四傻!!!!");
//break;
}
byte i = 10;
switch(i){
case 1:
System.out.println("1");
break;
case 10:
System.out.println("10");
break;
case 100:
System.out.println("100");
break;
}
char ch = 'a';
switch(ch){
case 'a':
System.out.println("a");
break;
case 'b':
System.out.println("b");
break;
}
}
}
三,循环语句
循环结构: 控制一些代码重复执行多次
for循环
while循环
do..while循环
1,for循环
for(条件初始化;条件判断;条件变化){
重复执行的语句;
}
条件初始化: 声明一个变量并且第一次赋值 i
条件判断 : 对变量i的值的判断->结果为boolean的值
条件变化 : 变量i自身值的改变
执行流程:
1.条件初始化,得到一个变量i
2.条件判断的结果->boolean
3.true->执行{}中的代码->false结束循环
4.条件变化
重复执行第2,3,4步骤
注意:
循环结构中,如果{}中的语句体只有一句,前后的{}可以省略
循环体重可以使用循环的条件变量i,可以不使用
for循环是循环结构中最常用的循环结构 *****
public class Class007_For{
public static void main(String[] args){
//打印一句话->重复打印10次
//System.out.println("安红,我想你想的睡不着觉!!!!");
//System.out.println("安红,我想你想的睡不着觉!!!!");
for(int i=1;i<=10;i++)
System.out.println("安红,我想你想的睡不着觉!!!!"+i);
//计算1~4之间整数的和
int sum = 0; //记录整数和
for(int i=1;i<=4;i++)
sum += i;
System.out.println(sum);
//System.out.println(i); //作用域只属于当前定义的循环结构
}
}
public class Class008_ForTest { public static void main(String[] args) { //求1-100的和,求1-100的偶数和,求1-100的奇数和 //1)找到1~100之间的每个数 //2)求和 int sum = 0 ; //存储1~100之间整数和 int sum1 = 0 ; //存储奇数和 int sum2 = 0 ; //存储偶数和 for(int i=1;i<=100;i++){ System.out.println(i); sum+=i; //sum = sum+i; } System.out.println(sum);
//偶数和
for(int i=0;i<=100;i++){
//偶数
if(i%2==0){
sum2+=i;
}else{
//奇数
sum1+=i;
}
}
sum2 = 0; //归零
for(int i=0;i<=100;i+=2){
sum2+=i;
}
System.out.println("奇数和 = "+sum1);
System.out.println("偶数和 = "+sum2);
//1-50当中能被4整除的数的和
sum = 0;
for(int i=1;i<=50;i++){
if(i%4==0){
sum+=i;
}
}
System.out.println(sum);
//求出 1-100当中既能被3整除又能被5整除还能被2整除的和,
sum = 0;
for(int i=1;i<=100;i++){
if(i%2==0 && i%5==0 && i%3==0){
sum+=i;
}
}
System.out.println(sum);
//求出 1-100当中能被3整除或者能被5整除或者能被2整除的和
sum = 0;
for(int i=1;i<=100;i++){
if(i%2==0 || i%5==0 || i%3==0){
sum+=i;
}
}
System.out.println(sum);
//求5的阶乘 5! 5*4*3*2*1
int result = 1; //记录乘积
for(int i=5;i>=1;i--){
result*=i;
}
System.out.println(result);
System.out.println("--------------------------------------------");
//请找出[100,300]之间能被5整除的所有数,每行输出8个数
int count = 0; //计数器
for(int i =100;i<=300;i++){
if(i%5==0){
System.out.print(i+"\t");
//计数器+1
count++;
//换行的条件 每行输出8个
/*
//1.
if(count==8){
System.out.println(); //换行
count = 0; //计数器归零
}
*/
//2.
if(count%8==0){
System.out.println(); //换行
}
}
}
//请找出[100,300]之间能被5整除的所有数,每行输出8个数,每两个数之间用逗号隔开
System.out.println("--------------------------------------------");
System.out.println("--------------------------------------------");
System.out.println("--------------------------------------------");
count = 0; //计数器
for(int i =100;i<=300;i++){
if(i%5==0){
//即将要打印的数据是每行的第一个数据,第一个数据只打印数据值,不打印,
if(count==0){
System.out.print(i);
}else{
System.out.print(","+i);
}
//计数器+1
count++;
//换行的条件
if(count==8){
System.out.println(); //换行
count = 0; //计数器归零
}
}
}
}
}
2,while循环
while 条件循环 条件初始化; while(条件判断){ 重复执行的语句体; 条件变化; } 注意 : 循环之间都可以相互转换
public class Class009_While { public static void main(String[] args) { //打印20~30之间的整数 for(int i=20;i<=30;i++){ System.out.println(i); }
public class Class009_While {
public static void main(String[] args) {
//打印20~30之间的整数
for(int i=20;i<=30;i++){
System.out.println(i);
}
int i=20; //作用域从声明开始,到main方法的结束
while(i<=30){
System.out.println(i);
i++;
}
//死循环
boolean flag = false;
while(flag)
System.out.println("执行不到1");
//System.out.println(i); //错误: 无法访问的语句
}
}
3,结束与跳过
break与continue break: 作用 : 终止 结束 应用场景 : switch语句 循环中 continue : 作用 : 跳过当前这一次循环,直接进入到下一次循环 应用场景 : 循环中