安卓开发之java基础笔记【4】

1.冒泡排序
特点:是相邻的两个元素进行比较
需要使用双重循环来实现。
16,25,9,90,23
第一趟:
25,16,9,90,23
25,16,9,90,23
25,16,90,9,23
25,16,90,23,9
第二趟:
25,16,90,23,9
25,90,16,23,9
25,90,23,16,9
第三趟:
90,25,23,16,9
90,25,23,16,9
第四趟:
90,25,23,16,9
外层循环用来控制比较的趟数
内层循环用来控制每趟比较的次数
外层循环和内层循环的终值的设定可通过以下口决来记忆:
两个数字来排队,
两两相比小靠前,(升序)
外层循环n-1,

内层循环n-1-i(n指数组长度)


    //16,25,9,90,23
        int[] numbers={16,25,9,90,23};
        System.out.println("排序前:");
        for(int i=0;i<numbers.length;i++){
            System.out.println(numbers[i]);
        }
        //排序:
        int temp=0;//定义一个临时中间变量
          for(int i=0;i<numbers.length-1;i++){
            for(int j=0;j<numbers.length-1-i;j++){
                if(numbers[j]<numbers[j+1]){
                    temp=numbers[j];
                    numbers[j]=numbers[j+1];
                    numbers[j+1]=temp;
                }
            }
        }
        System.out.println("排序后:");
        for(int i=0;i<numbers.length;i++){
            System.out.println(numbers[i]);
        }
2.选择排序:
特点:是拿剩余的数和目标数据进行比较
比较一趟会选择出一个最小数。
优化之后,只需要在每趟中找到改趟最小数的位置并记录下来
当改趟比完之后,最多进行一次数据交换。
//选择排序的优化
        for(int i=0;i<numbers.length-1;i++){
            int min=i;
            for(int j=i+1;j<numbers.length;j++){
                if(numbers[j]<numbers[min]){
                    min=j;
                }
            }
            if(min!=i){
                temp=numbers[i];
                numbers[i]=numbers[min];
                numbers[min]=temp;
            }
        }
其它的排序算法可以了解:希尔排序,插入排序,堆排序。
值类型(基本数据类型):
在内存中分配的存储空间在栈区中
通过变量名直接访问到的就是数据本身
数组(引用类型):

引用类型在内存中栈区里保存的是地址(引用),而数据则存储在地址(引用)所标识的堆区里。

二维数组:

java当中的二维数组可以看成是多个一维数组,在对二维数组数据的存放方式上实际是多个连续的一维数组。
二维数的声明:
声明同时设定行数和列数
int[][] datas=new int[3][4];
声明同时给数组元素赋值
int[][] datas={{1,2,,3},{4,5,6},{7,8,9}};
还支持只给定二维数组的行数的方式来声明二维数组,然后再分别指定每一个数组的长度。
int[][] datas=new int[3][];
datas[0]=new int[2];
datas[1]=new int[3];
datas[2]=new int[2];

同时也支持以下方式在声明的同时赋值:
int[][] datas={{2,3},{,4,5,6},{,7,8,9,10}};
在对二维数进行访问时需要用双重循环
外层循环控制行数,内层循环控制每行个数:
public class TestArrays3 {
    public static void main(String[] args) {
        int[][] datas={{1,2},{3,4,5},{6,7,8,9}};
        for(int i=0;i<datas.length;i++){
            for(int j=0;j<datas[i].length;j++){
                System.out.print(datas[i][j]+"\t");
            }
            System.out.println();
        }
    }
}


类:是一个概念,是一个模型,是一组具有相同属性和形为的对象的抽象。
对象:对象是类的一个实体,是实实在在能够看得见摸得到的一个实例。
对象的实例化:
类名 对象名=new 类名(); 
对象名.属性1=值1;
对象名.方法名();
基本数据型和引用数据类型的区别:

基本数据型通过变量访问到就是变量标识内存数据。
引用数据类型通过标识的名称访问到的是所引用的对象的地址。
通过标识符名.属性来访问对象的属性。
通过标识符名.方法名()的形式来调用对象的方法。
成员变量:
定义在类的内部,该类的所有的方法都可以访问,系统会为成员变量自动根据数据类型赋初值。
局部变量:
定义在方法内部,或方法内的某个代码块儿里。局部变量只能被定义它的方法或代码块儿访问,并且系统不会自动为局部变量赋初值,因此在使用之前必须要为局部变量赋值。
方法的定义:
1.无参方法
访问修饰符 返回值类型 方法名(){
  //方法体
}
带有返回值方法在调用的时候通常可以放在一个赋值表达式中,或者一个输出语句中。
带有返回值的方法,在方法体中要有和返回值类型相匹配的返回结果。
不带返回值的方法在调用时通常都是一个独立的调用语语,因为没有返回值,所以不能对结果赋值。在方法体中如果要使用return,则return语句后什么也不跟。
2.带参方法的定义
访问修饰符 返回值类型 方法名(数据类型 参数1,数据类型 参数2......){
   //方法体
}
a.在调用带有参数的方法时,方法调用处的参数称为实际参数,需要携带实际值。方法定义时的参数称为形式参数,主要限定参数的类型,个数,顺序。

实际参数的类型,个数,和顺序要和形式参数一一对应。
b.当方法的参数是一个对象类型的数组时,要注意实际参数数组的创建,以及数组中每一个元素的实例化,否则程序执行过程中有可能引发空指针异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值