package cn.tedu.array;
import java.util.Arrays;
//本类用于练习数组的创建
public class TestArray {
public static void main(String[] ages) {
char[] c1 = {'h','e','l','l','o'};//静态创建
char[] c2 = new char[] {'w','o','r','l','d'};//静态创建
char[] c3 = new char[5];//动态创建
//我们通过数组的下标来操作数组中的每一个元素,注意数组下标从0开始
c3[0] = 'h';
c3[1] = 'e';
c3[2] = 'l';
c3[3] = 'l';
c3[4] = 'o';
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
System.out.println("---------------");
String[] s1 = {"a","b","c"};
String[] s2 = new String[] {"a","b","c"};
String[] s3 = new String[3];
s3[0] = "a";
s3[1] = "b";
s3[2] = "c";
/*char类型的数组,在底层代码中做了处理,可以直接打印数组名查看数组中具体元素
* 除了char类型以外的数组如果想查看数组中的具体元素
* 则需要使用数组的工具类:Arrays
* 具体方法:Arrays.toString(数组名),注意Arrays使用时需要导包*/
System.out.println(Arrays.toString(s1));
System.out.println(Arrays.toString(s2));
System.out.println(Arrays.toString(s3));
}
}
package cn.tedu.array;
import java.util.Arrays;
//本类用于回顾数组的创建方式
public class TestArray2 {
public static void main(String[] ages) {
int[] a = {1,2,3,4,5,6};
int[] b = new int[] {1,2,3,4,5,6};
int[] c = new int[6];
c[0] = 1;
c[1] = 2;
c[2] = 3;
c[3] = 4;
c[4] = 5;
c[5] = 6;
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));
System.out.println(Arrays.toString(c));
/*int是基本类型,int[]代表的是int数组,是引用类型
* 而数组类型的变量比如a,保存的就是数组的地址值,而不是数组中的多个具体元素*/
System.out.println(a);
/*数组一旦创建,长度不可改变,如果想要增加/删除数组中的元素
* 只能先创建一个新长度的数组,再将原来的数据复制过去*/
System.out.println(a.length);//查看数组的长度
}
}
package cn.tedu.array;
import java.util.Arrays;
import java.util.Random;
//本类用于数组练习
public class TestArrayExec {
public static void main(String[] ages) {
dayOfMonth();
addNumToArray();
createArray();
}
private static void createArray() {
int[] a = new int[6];
for(int i=0;i<a.length;i++) {
a[i] = new Random().nextInt(100);
}
System.out.println(Arrays.toString(a));
}
private static void addNumToArray() {
int[] a = new int[10];
for(int i=0;i<a.length;i++) {
a[i] = (i+1);
}
System.out.println(Arrays.toString(a));
}
private static void dayOfMonth() {
int[] a = {31,28,31,30,31,30,31,31,30,31,30,31};
for(int i=0;i<a.length;i++) {
int b = a[i];
System.out.println((i+1)+"月有"+b+"天");
}
}
}
package cn.tedu.array;
import java.util.Arrays;
//本类用于练习数组的扩容与缩容
public class TestArraysCopOf {
public static void main(String[] ages) {
int[] from = {1,2,3,4,5};//数组一旦创建,长度不可改变
/*1.copyOf()用于完成数组的复制,两个参数:
* 参数1:要复制哪个数组
* 参数2:新数组的长度*/
int[] to = Arrays.copyOf(from, 5 );
System.out.println(Arrays.toString(from));
System.out.println(Arrays.toString(to));
/*2.1扩容:给数组扩大容量,新数组长度>原数组长度
* 扩容思路:先创建对应新长度的新数组,每个位置初始化默认值为0
* 然后从原数组中将数据复制到新数组,没有被覆盖的位置还是默认值0*/
int[] to2 = Arrays.copyOf(from, 10);
System.out.println(Arrays.toString(to2));
/*2.2.缩容:缩小数组的容量,新数组长度<原数组的长度
* 缩容思路:先创建对应新长度的新数组,每个位置初始化默认值为0
* 然后从原数组中复制指定个数的数据到新数组中,类似于"截取"一部分*/
int[] to3 = Arrays.copyOf(from, 3);
System.out.println(Arrays.toString(to3));
/*2.3.指定首尾截取原数组中的元素
* copyOfRange()用于完成数组的截取
* 参数1:要截取哪个数组[原数组]
* 参数2:从那个下标开始[包含此下标对应的元素]
* 参数3:到哪个下标结束[不包含此下标对应的元素]
* 参数3如果超过原本数组的下标,会在截取的同时给新数组扩容*/
int[] to4 = Arrays.copyOfRange(from, 2, 4);
System.out.println(Arrays.toString(to4));
int[] to5 = Arrays.copyOfRange(from, 1, 7);
System.out.println(Arrays.toString(to5));
}
}
package cn.tedu.basic;
import java.util.Arrays;
//本类用于实现冒泡排序
public class BubbleSort {
public static void main(String[] ages) {
int[] a = {27,96,73,25,21};
//method(a);
//我们使用数组工具类Arrays的sort()对数组元素进行排序
Arrays.sort(a);
System.out.println(Arrays.toString(a));
}
/*private static void method(int[] a) {
for(int i=1;i<a.length;i++) {
for(int j=0;j<a.length-i;j++) {
if(a[j] > a[j+1]) {
int k = a[j];
a[j] = a[j+1];
a[j+1] = k;
}
}
System.out.println("第"+i+"轮比较后的结果"+Arrays.toString(a));
}
System.out.println(Arrays.toString(a));
}*/
}
package cn.tedu.basic;
import java.util.Random;
//本类用于练习do-while循环
public class TestDoWhile {
public static void main(String[] ages) {
int n;
do {
System.out.println("我是循环体");
n = new Random().nextInt(300);
System.out.println(n);
}while(n>100);
}
}
package cn.tedu.basic;
//本类用于测试方法的重载
public class TestMethod {
public static void main(String[] args) {
/*1.我们通过方法名+参数列表确定具体调用哪个方法
* 2.方法的重载:
* 在同一个类中,存在方法名相同,但是参数列表不同的方法
* 如果在同类中,同名方法的参数个数不同,一定构成重载
* 如果在同类中,同名方法的参数个数相同,可能构成重载
* 需要查看对应位置上参数的类型,而不是参数名,与参数名无关
* (int a,String b) 和 (int b,String a)---不构成重载
* (int a,String b) 和 (String a,int b)---构成重载*/
method();
method(666);
method(999,"感冒灵");
method("屠龙宝刀",999);
}
private static void method() {
System.out.println("哈哈哈哈我没有参数~");
}
private static void method(int a) {
System.out.println("哈哈哈哈我真的"+a);
}
private static void method(int a,String b) {
System.out.println(a+b+",治感冒真好使");
}
private static void method(String a,int b) {
System.out.println(a+"点击就送,一刀"+b+",是兄弟就来砍我呀!!!");
}
}
package cn.tedu.basic;
import java.util.Random;
import java.util.Scanner;
//本类用于练习while循环
public class TestWhile {
public static void main(String[] ages) {
int r = createNum();
System.out.println("生成的随机数:"+r);
System.out.println("请输入您猜的数字(0~100)");
guessNum(r);
}
private static int createNum() {
//这个100的值是我们自定义的,此时生成的数值范围是[0~100)以内的随机整数
return new Random().nextInt(100);
}
@SuppressWarnings("resource")
private static void guessNum(int r) {
//while常用作死循环,循环条件直接写true
//但注意死循环必须在合适的时候设置出口
while(true) {
int b = new Scanner(System.in).nextInt();
System.out.println("猜猜看");
if(b == r) {
System.out.println("恭喜你猜中了");
break;//出口
}else if(b>r) {
System.out.println("猜大了,悠着点");
}else {
System.out.println("猜小了,格局打开" );
}
}
}
}