Java初学(四)+个人收获

        这次博客拖得时间有点久,主要是这段时间参加运动会等,空闲时间较少,以后会注意一下的。这次带来的都是一些干货,内容也和以前不同,这次的内容是有关于数组方面的知识,有数组定义、数组操作、值传递和引用传递、数组排序等。

        一、数组定义:

                作用:对于一个方法,每次只能返回一个值,无法多值返回,而通过定义数组,可以将多个值保存在数组中,用数组来实现多值返回。

                定义:相同数据类型的数据按顺序组成的一种引用数据类型

                   注:类型相同指的是保存过后在内存中的表现形式相同

                特点:1.数据类型相同
          2.按顺序组成

        声明:

                        1.一维数组:

                                    数组元素类型  []  数组名;

                        2.二维数组:

                                   数组元素类型   [][]   数组名;

                数组实例化:

                           声明数组仅仅给出了元素的数据类型和数组名字,想要使用数组就必须为他分配内存空间,即实例化数组

                实例化数组就是申请了一段连续的内存空间存储数组中的元素。

                            方法:

                                  1.数组分配内存空间时指明数组长度, 语法格式: 数组名 = new 数组元素数据类型[数组元素个数]

                                      一维: String [] nameArray;

                                                  nameArray = new String[3];

                                                  nameArray[0] = .....;

                                      二维: double [] [] wagesArray;

                                                  wagesArray = new double[2] [30];

                                                  wagesArray[0] = .......;

                                  2.穷举法实例化数组:

                                           一维:

                                               int [] evenNumber = {2,4,6,8};

                                               int [] evenNumber = new int [] {2,4,5,8};

                                          二维:

                                              对称二维数组:       int [] [] scoreArray = {{2,4,5,6},{3,4,5,6}};

                                              非对称二维数组:    int  [] [] scoreArray = new int [] [] {{2,4,5},{3,5,8,9,4,6}}  

                                      注:  

                                            1.  穷举法只能在初始化数组时使用,即必须和声明数组代码放在一条语句中完成

                                            2.  int [][] array = new int [3][30];//在该二维数组中,第一个[]表示该二

                                              维数组包含3个一维数组,后一个[]表示每个一维数组中包含30个元素             

           二、数组操作

                        数组中的数据通过数组名和数组下标来操作数据,且下标从0开始

                        遍历数组元素:

                              1.传统for循环:

                                    一维 : for(int i=0;i<array.length;i++ ){

                                                        System.out.println(array[i]);                                                  }

                                    二维: for(int i=0;i<array.length;i++){

                                                          int [] subway = array[i];

                                                          for(int j=0;j<subway.length;j++){

                                                                      System.out.println(subway[j]);

                                                          }

                                              }

                              2.加强for循环

                                              for(集合中元素数据类型   元素名 : 数组名){

                                                                              .......

                                              }

                                             一维:

                                                          for(int temp : array){

                                                                     System.out.println(temp);

                                                          }

                                              二维:

                                                          for(int [] temp : array){

                                                                      for(tem : temp ){

                                                                                  System.out.println(tem);

                                                                      }

                                                          }

           三、值传递与引用传递

                             值传递: 指在调用函数时将实际参数赋值一份传递到函数中,这样在函数中如果对参数进行修改将不

                     会影响到实际参数

                             引用传递:是指在调用函数时将实际参数的地址直接传递到函数中,这样在函数中对参数所进行的修改

                    将直影响到实际参数。

          四、数组排序

                      冒泡排序:

                            public class ArraySort{

                                       public static void main(String [] args){

                                                int [] array = {21,99,35,64,68};

                                                for(int loop=1;loop<array.length;loop++){

                                                           for(int i=0;i<array.length-1;i++){

                                                                       int nowData = array[i];

                                                                       int nextData = array[i+1];

                                                                        if(newData>nextData){

                                                                                    array[i] = nextData;

                                                                                    array[i+1] = nowData;

                                                                        } 

                                                           }

                                                 }

                                                 for(int temp : array){

                                                            System.out.println(temp);

                                                 }

                                        }

                            }

                        

                        插入排序:

                                     public class ArraySort{

                                               public static void main(String [] args){

                                                    int [] array = {21,99,35,64,68};

                                                    for(int i=1;i<array.length;i++){

                                                                int nowData = array[i];

                                                                for(int j=0;j<i;j++){

                                                                        if(nowData<array[j]){

                                                                                break;

                                                                        }

                                                                }

                                                                for(int k=i;k>j;k--){

                                                                        array[k] = array[k-1];

                                                                }

                                                                array[j]=nowData;

                                                    }

                                                    for(int temp : array){

                                                                System.out.println(temp);

                                                    }

                                               }

                                    }

                注:

                插入排序:
1.知道插入数据在数组中的位置
2.找到待插入数应该插入的位置
3.将带插入位置之后的元素后移一位,并将带插入元素插入到该插入的位置

        核心思想:
                把数组分为有序区和无序区,定义定位变量始终标记无序区第一个元素,将该元
                素与前面的有序区内元素遍历比较,找到变序的位置插入,变序点元素包括之后
                的元素后移,有序区扩增一位,无序区减少一位,定位变量同样后移,锁定无序
                区第一位元素

关键点:   遍历、定位、伴随往后
1.定位变量的遍历(最外层for循环)
2.有序区元素的遍历定位插入点(for)

3.有序区扩增,区内元素后移(for)


个人学习总结:

                结构
定义:
结构是一种构造数据类型,有若干数据项组合而成

struct StructName{
//结构成员
DataType var1;
DataType var2;
//...
};
注:1.结构定义并不预留内存
2.结构定义一般放在程序的开始部分(头文件声明之后)
3.结构定义仅用来描述结构的形式,使用结构需要声明结构变量
4.结构体之间可以嵌套,如:
struct Date{
int month;
int day;
int year;
}
struct Student{
int num;
char sex;
struct Date birthday;
int age;
}
5."."是成员运算符,在所有的运算符中优先级最高
6.结构体变量的成员可以像普通变量一样进行各种运算

struct1.age++;

               // 指针方式赋值
#include<stdio.h>
struct Hero{
char * name;
int level;
char * job;
char * skill;
};
void main(){
//声明结构变量
struct Hero Chan;
Chan.names = "___";
Chan.levels = 25;
Chan.jobs = "___";
Chan.skills = "____";
}
//优点:赋初值可以直接指向某个常量指针
  缺点:不能用scanf给指针元素赋初值,因为指针在使用前没有内存,
  但可以与malloc函数搭配动态地给指针元素赋值,如hero1.name = (char*)malloc(___);
        scanf("%s",hero1.name);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值