Java基础笔记4

Java基础

1. 循环相关

1.1do...while

do...while语法规则:

语句0 ;

do{

语句1;//循环体

语句2;//

}while (循环条件);

语句3 ;

对比while循环

while循环先判断,再执行;

做。。。而先执行一次,再判断。

虽然循环比做...同时循环用得多。

代码

package day5;
import java.util.Scanner;
// do { 语句 } while(条件); , 特点是:循环体至少执行一次。
public class DoWhileDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
/*
int num ;
do{
System.out.println("请输入一个数据");
num = scanner.nextInt();
}while (num != 30 );
*/
// 练习: 输入密码( 123456 )解锁手机, 只能输入 5 次,超过 5 次了就提示用户过半个小
时在尝试。
int count = 1 ; // 记录次数
int pwd ;
do{
if(count == 6 ){
System.out.println("你的输入次数用完了,请半个小时之后,在尝试。");
//break; 结束循环
return;  // 结束整个程序的运行
}
System.out.println("请输入密码:");
pwd = scanner.nextInt();
count ++ ;// 改变输入的次数
}while (pwd != 123456 );
System.out.println("手机解锁成功了。");
}

1.2死循环

循环没有指明结束条件的情况会造成死循环

1.3中断并继续

break可用于循环语句或switch语句。

break用于循环,可使程序终止循环从而执行循环后面的语句。常常与条件语句一起使用。

continue 用于循环语句中,表示跳过循环体剩余语句,继续执行下一次循环。

continue 只能在循环语句中使用。

代码

}

package day5;
import java.util.Scanner;
// 随机出 10 道题, 记录用户的考试分数,每题 10 分.
public class TestDemo {
public static void main(String[] args){
int score = 0 ; // 用于记录分数
Scanner sc = new Scanner(System.in);
for(int i= 1 ;i <= 10 ;i ++){
int a = (int)(Math.random() * 10 );// 强制转换
int b = (int)(Math.random() * 10 );
System.out.println("题目:" + a + " + " + b + "=");
System.out.println("请输入你的答案:");
int answer = sc.nextInt() ;
if(answer == - 1 ){ // 表示用户跳过这题
continue; // java中的关键字, 用于跳过本次循环, 继续下一次循环。
}else if(answer == - 2 ){
break; // 结束for循环
}else {
if(answer == a+b){
score += 10 ;  // 记录分数
}
}
}
// for循环结束,表示考试结束了,显示最终得分
System.out.println("最后得分:" + score);

1.3循环的嵌套

循环的内部,再有其它循环,就是循环的嵌套。

外层走一次,内层走所有次

建议循环层数越少越好

代码

2. 数组

2.1什么是数组

数组:相同数据类型的元素组成的集合

元素按线性顺序排列。所谓线性顺序是指除第一个元素外,每一个元素都有唯一的前驱元素; 除最

后一个元素外,每一个元素都有唯一的后继元素("一个跟一个"),可以通过元素所在位置的顺序号

(下标)做标识来访问每一个元素(下标从 0 开始,最大到元素的个数-1)

2.2数组的使用

}

}

循环的嵌套: 循环的内部,还包含一个循环。

*** 外层循环执行一次, 内层循环执行所有次。(内部循环执行结束了,再次执行到外层

循环的下一次。)

public class JiuJiuDemo {
public static void main(String[] args) {
for(int i = 1 ; i <= 9 ; i ++){  // 外层循环
for(int j = 1 ;  j <= i; j++){ // j<=i ,可以设置内层循环的次数。
System.out.print( i + "+" + j + "=" + (i+j) + "\t"); // \t转
移字符, tab键的宽度
}
System.out.println(); // 输出一个回车换行
}
}
}

声明数组的语法:

数据类型[] 数组名 = new 数据类型[大小];

数组声明后的默认值

------数组new之后,每个元素都有默认值。int,long默认值为 0 ,double默认值为0.0,boolean

默认值为false,char默认值为空字符。

代码

package day5;
// array - 数组
// 当我们有一组数据需要保存在一个变量中的时候,一般可以声明一个对应长度和对应数据类型的数
组, 然后把这组数据存储在数组中。
public class ArrayDemo {
public static void main(String[] args) {
// 1. 定义一个数组
//int a = 1,b=10,c=20,d=30,e=50; // 定义了五个变量,存储了五个数据。
int[] arr ; // arr是数组类型
//arr = new int[]; // 编译错误: java规定创建数组对象的时候,必须指定数组的长
度。
arr = new int[ 6 ]; // 内存空间会分配存储长度为 6 个整形数据空间。
// 2. 数组的初始化
int[] arr1 = new int[ 5 ]; // arr1的长度是5. 这里的每个元素都是int类型的默认
值:0.
char[] arr2 = {'A','B','A', 10 } ; // arr2的长度是 4 ,每个位置的元素已经指
定了。
double[] arr3 = new double[]{1.5,2.5,3.5,4.5}; //arr3的长度 4 , 每个位
置都有具体的数据。
// 3. 通过数组的下标(从 0 开始,到元素个数-1结束)访问到数据中的元素。
/*
System.out.println(arr1[0]); // arr1[下标]
System.out.println(arr1[1]);
System.out.println(arr1[2]);
System.out.println(arr1[3]);
System.out.println(arr1[4]); // 数组长度是 5 , 下标值: 0 , 1 , 2 , 3 , 4 , 其
它数据,则发生异常。
*/
for(int i= 0 ;i < 5 ; i++){
System.out.println(arr1[i]); // arr1[i] , i 从 0 逐渐变化到4. 正好就
是数组的每一个元素。
}

数组的交换位置

}

}

package day5;
public class ArrayDemo2 {
public static void main(String[] args) {
// 1. 创建整形数组
int[] arr = new int[]{ 10 , 15 , 8 , 40 , 25 , 5 };
// 2. 把数组中最大的数据值移动到最末位。
for(int i= 0 ; i <= arr.length - 2 ; i ++){
if(arr[i] < arr[i+ 1 ]){ // 当前元素 小于 下一个元素, 不交换位置, 反之
交换位置
continue; // 跳出本次循环
}else{
int temp = arr[i];
arr[i] = arr[i+ 1 ];
arr[i+ 1 ] = temp;
}
}
// 3. 遍历输出数组的元素
for(int i = 0 ; i < arr.length ; i ++ ){
System.out.println(arr[i]);
}
// 4. 练习:把最小值移动末尾
for(int i = 0 ; i < arr.length - 1 ; i++){
if(arr[i] < arr[i+ 1 ]){// 当前元素,小于下一个元素,说明需要交换位置。
int temp = arr[i];
arr[i] = arr[i+ 1 ];
arr[i+ 1 ] = temp ;
}
}
// 5. 遍历输出数组的元素
System.out.println("最末尾是最小的:");
for(int i = 0 ; i < arr.length ; i ++ ){ // 假设: i <= arr.length
// i = 0,1,2,3,4,5,6 , 下
标只能是 0 , 1 , 2 , 3 , 4 , 5 ,
// i=6 数据数据arr[6] , 找
不到 , 程序处理不了, 就抛异常
System.out.print(arr[i] + "\t");
}
/*
Exception : 异常
ArrayIndexOutOfBoundsException : array 数组 , index 索引 , out of
bounds 超出边界
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:
6
at day5.ArrayDemo2.main(ArrayDemo2.java:33) // 类中的第 33 行。
*/
}
}

2.3数组的排序

冒泡排序:所谓的冒泡算法就是从左往右依次比较两个数大小,若前一个数大于后一个数,则两个数

交换位置

升序

降序

package day5;
// bubble: 泡
// 冒泡排序: 双重for循环, 外层for循环走一次,内层循环周n次, 就能把数组中的一个元素的位
置排好 。
public class BubbleDemo {
public static void main(String[] args) {
int[] arr = new int[]{ 10 , 15 , 8 , 40 , 25 , 5 };
// 1. 升序排序
for(int i= 0 ; i < arr.length - 1 ; i++ ){
for(int k = 0 ; k < arr.length - 1 ; k++){ // k = 0 , 1 , 2 , 3 , 4
, k+1 = 1,2,3,4,
if(arr[k] < arr[k+ 1 ]){
continue;
}else{ // 下一个小,就交换位置
int temp = arr[k];
arr[k] = arr[k+ 1 ];
arr[k+ 1 ] = temp ;
}
}
}
// 2. 输出升序数组
for(int i= 0 ; i < arr.length ; i++){
System.out.print(arr[i] + "\t");
}
}
}
package day5;
// bubble: 泡
// 冒泡排序: 双重for循环, 外层for循环走一次,内层循环周n次, 就能把数组中的一个元素的位
置排好 。
public class BubbleDemo1 {
public static void main(String[] args) {
int[] arr = new int[]{ 10 , 15 , 8 , 40 , 25 , 5 };
// 1. 降序排序
for(int i= 0 ; i < arr.length - 1 ; i++ ){
for(int k = 0 ; k < arr.length - 1 ; k++){ // k = 0 , 1 , 2 ,
3 , 4 , k+1 = 1,2,3,4,
if(arr[k] < arr[k+ 1 ]){
int temp = arr[k];
arr[k] = arr[k+ 1 ];
arr[k+ 1 ] = temp ;
}
}
}

数组排序函数排序

Arrays.sort()——jdk提供的排序方法。

数组复制

JDK提供对数组进行复制的方法,即将一个数组(源数组)中的各个元素值复制到另一个数组(目

标数组)中:

数组扩容

数组的长度在创建后不可以改变的。所谓"扩展"是指创建一个更大新数组,并将原有数组的内容复

制到其中。

Jdk提供了一个方法,Arrays.copyOf 可以实现数组的“扩容”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值