Java基础
数组:
概念:数组Array,标志是[ ],
是用于存储多个相同的类型数据的集合,int [], string[ ],byte [].
想要获取数组中的元素值,可以通过下表来获取,下表是从0开始的
创建数组:
一般可以分为静态创建和动态的创建
获取数组里面的值的方法:
创建数组:
动态创建:
表示创建的内容可以进行进行随机的输入
int [ ] a=new int [10];
1.在内存中开辟的连续区间存放数据
2.把数据完成初始化,设置为默认值,默认值是0;每个数据都是0
int类型的数据的默认值是0,相当于存了10个0
3.在数组中创建完成后,会生成唯一的地址,16进制的形式
4.把地址值交给引用型的变量a进行保存,就是创建的数组的名字
静态创建:
静态的输入代表的内容,表示输入的东西固定
int [] a= new int [] {1,2,3,4,5}
int [ ] a={1,2,3,4,5}
练习一:
在数组中存入Hello
静态的创建方法(2种方法)
private static void method2() {
//静态的创建,声明数组的同时完成了初始化
char[] c2=new char[] {'h','e','l','l','0'};
char[] c3={'h','e','l','l','0'};
System.out.println(c2);
System.out.println(c3);
}
动态的创建方法(方法)
private static void method1() {
char[] c=new char[10];
//动态创建数组
c[0]='H';
c[1]='e';
c[2]='l';
c[3]='l';
c[4]='o';
System.out.println(c);
}
数组的长度:
length的属性
数组一旦创建,长度不可以变化
允许0长度的数组
数组的遍历
知识点:利用for循环,代表的是下标,从零开始,里面的条件写i<a.length或者是i<=a.length-1
数组的遍历的形式
for(int i=0;i<a.length;i++){
syso(a[i]);
}
问题一:
遍历数组,存入1-10
private static void method1() {
int [] array= {0,1,2,3,4,5,6,7,8,9};
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
}
动态的创建和遍历:
private static void method2() {
int [] a=new int[10];
for (int i = 0; i < a.length; i++) {
}
}
Arrays.toString(数组的名称),打印出来的结果是数组的形式
private static void method2() {
int [] a=new int[10];
for (int i = 0; i < a.length; i++) {
//表示的是第一个元素a[0]=0+1
//表示的是第二个元素a[1]=1+1
a[i]=i+1;
}
System.out.println(a); //[I@7852e922,直接打印是打引的地址
System.out.println(Arrays.toString(a));//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
}
问题二:
输出每月的天数
private static void method3() {
//创建数组,存放天数
int[] a= {31,29,31,30,31,30,31,31,30,31,30,31};
for (int i = 0; i < a.length; i++) {
//System.out.println(a[i]);
int b=i+1;
System.out.println(b+"月有"+a[i]+"天");
}
}
问题三:
创建一个随机的数组,获取100以内的数组
难点一:如何实现随机获取100以内的随机数
array[i]=new Random().nextInt(100);
private static void method4() {
int [] array=new int[5];
for (int i = 0; i < array.length; i++) {
array[i]=new Random().nextInt(100);
}
System.out.println(Arrays.toString(array));
}
冒泡排序:
概念:是一种计算器科学领域的简单的排序算法,访问过要排序的元素列,依次比较两个相邻的元素
如果他们的顺序错误就把他们交换过来,走访的元素的工作是简单地重复地进行,直到没有元素需要交换
也就是说元素已经完成排序
形式:
相邻的位置比较,如果数值大就会选择往后放,直到没有数据调换为止
代码的实现
1.双层for循环,外层控制轮数,5个数,比四轮
for (int i = 0; i < array.length-1; i++)
2.内层的循环的控制,比大小,换位置
for(int j=0;j<a.length-1,j--){
作比较(a[j]>a[j+1])(代码代表的是相邻的连两个数字作比较)
换位置(收尾相连)
}
代码实现:
private static void method4() {
int [] array=new int[5];
for (int i = 0; i < array.length; i++) {
array[i]=new Random().nextInt(100);
}
for (int i = 0; i < array.length-1; i++) {
//此处的-i的含义是第一次冒泡之后就会减少比较的次数
for (int j = 0; j < array.length-1-i; j++) {
if (array[j]>array[j+1]) {
int a;
a=array[j+1];
array[j+1]=array[j];
array[j]=a;
}
}
}
System.out.println(Arrays.toString(array));
}
变量:
定义:可以改变的数,称之为变量,一般通过三部分来描述一个变量。变量类型,变量名=变量值
其中三部分都是可以改变的,可以根据需要来确定
变量使用原则:就近原则,尽可能的控制到最小的范围
局部变量:
定义在方法里面的,或者局部的代码块里面
注意:必须手动的进行初始化,来分配内存,作用域也就是方法里或者是局部的代码块里面,方法运行完内存也就是释放了
成员变量:
定义在类类里面,方法外
注意:不用进行初始化,方法自动的被初始化为默认值,作用域是整个类中,类消失了,变量才释放
类的默认值