数组和常用类(8.11)

来源:互联网 发布:centos7 查看端口 编辑:程序博客网 时间:2024/06/04 01:15


数组



单独声明数组时,不可以初始化.

数组必须初始化(为数组元素分配内空间,给数组元素赋值)才可以使用。

动态初始化:只指定数组长度,由系统为数组元素赋值

数组的下标从0开始

静态初始化:初始化每个元素的初始值,由系统决定数组长度

数组里面数组的长度是成员变量;

冒泡排序   选择排序   插入排序

 

/** * 展示各种排序方法:冒泡,选择,插入,快速排序法 * 排序方法均采用封装在类中的方式 * created by Light on 2014-7-18 */package com.second;import java.util.*;public class DoSorting {public static void main(String[] args) {// TODO Auto-generated method stub//随机产生一个长度为80000的数据,这里先产生整数数组//int a = 800000;int [] arr = new int[80000000];//int arr[] = {0,-1,2,4,-6,33,10,11};//初始化数组,使用for循环for(int i=0;i<arr.length;i++){arr[i] = (int)Math.random()*100000;} //使用冒泡法排序//Bubble b = new Bubble();//使用选择法//Selection s = new Selection();//插入法  //Insertion it = new Insertion();  //快速排序法    QuickSort qc = new QuickSort();      //排序之前打印系统时间  //Calendar  c = Calendar.getInstance();  //Date d = new Date();  System.out.println("排序前:"+ new Date());    //调用排序  //冒泡  //b.sort(arr);  //b.showArray(arr);  //选择  //s.sort(arr);  //s.showArray(arr);  //插入  //it.sort(arr);  //it.showArray(arr);  //快速    qc.sort(0, arr.length-1, arr);  //qc.showArray(arr);  //排序之后打印系统时间  System.out.println("排序前:"+ new Date());}}//冒泡法类class Bubble{//Define public function directlypublic void sort(int arr[]) //using Array as kind of reference{for(int i=0;i<arr.length-1;i++)//外层循环控制轮询比较回合{//内层循环控制每个回合中的比较范围,没完成一个回合,范围应该减小一个元素//因为上一轮已经保证最大的排在了最后for(int j=0;j<arr.length-1-i;j++){int temp = 0;//判断大小if(arr[j]>arr[j+1]){temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}}//提供打印数组的方法public void showArray(int arr[]){System.out.print("数组排序后为:");//for循环打印for(int i=0;i<arr.length;i++){System.out.print(arr[i]+" ");}System.out.println();}}//选择法类class Selection{//直接创建选择方法public void sort(int arr[]){//外层循环控制回合数,每一个回合都把最小的一个数与arr[i]交换for(int i=0;i<arr.length-1;i++){//内存循环保证每个回合,即每一次内层循环退出时,找到一个最小值int minArr = arr[i];int minIndex = i;int temp =0 ;for(int j=i+1;j<arr.length;j++){//判断所去元素与minArr的大小,如果arr[j]比minArr小,则两者交换位置,否则不做处理if(arr[j]<minArr){minArr = arr[j];minIndex = j;}}//当循环退出时,minArr保证是本轮比较数组中最小的一个数temp = arr[i];arr[i] = minArr;arr[minIndex] = temp;}}//showArraypublic void showArray(int arr[]){System.out.print("数组排序后为:");//for循环打印for(int i=0;i<arr.length;i++){System.out.print(arr[i]+" ");}System.out.println();}}//插入法类class Insertion{//直接创建插入方法public void sort(int arr[]){//外层循环保证-->从第二个元素开始,一直到最后一个数-->进入内层处理逻辑,即在前面找到自己合适的位置for(int i=1;i<arr.length;i++){int tempArr = arr[i];//int minArr = arr[i-1];int minIndex = i-1;while(minIndex>=0 && arr[minIndex] > tempArr){arr[minIndex+1]=arr[minIndex];minIndex--;}//内层循环退出,表示找为arr[i]到了合适的位置,即arr[minIndex+1]//需要把tempArr赋给前面空出来的位置arr[minIndex+1] = tempArr;}}//showArraypublic void showArray(int arr[]){System.out.print("数组排序后为:");//for循环打印for(int i=0;i<arr.length;i++){System.out.print(arr[i]+" ");}System.out.println();}}//快速查询法class QuickSort{ //定义sort方法 public void sort(int left,int right, int array[]) {     int l = left;  int r = right;  int pivot = array[(left+right)/2];  int tempArray = 0;//后面做交换使用    while(l<r)//大的条件是l<r,即左边界要小于右边界  {   //内层分隔处理,左右各自处理   while(array[l]<pivot) {l++;}   while(array[r]>pivot) {r--;}   //如果在上面两个循环退出时,l>=r,则表示pivot的左边都比pivot小,右边都比pivot大,此轮排序目的达到,即将array分为两部分   if(l>=r) break;   //如果上面条件不成立,则将上面while循环找出的不符合条件的左右元素对调,目的也是向把array分为两部分靠拢   tempArray = array[l];   array[l] = array[r];   array[r] = tempArray;   //有可能存在array[l] or array[r]正好就是pivot,此时可在对调之后直接越过此元素,此时可以返回顶层while去检查l<r是否为true   if(array[l]==pivot) {r--;}   if(array[r]==pivot) {l++;}    }    //如果while退出,此时返回l=r,为了保证这个值不再参与排序,同样要保证能进入递归,需要将l and r 都处理一下    if(l==r)   {   l++;   r--;  }  //到此,第一轮的排序(分组)就完成了,将原array分为三部分--> array[0]~array[r] , array[l]~array[length-1]和array[l-1]不动元素  //并且,array[0]~array[r] 均小于array[l-1]; array[l]~array[length-1] 均大于 array[l-1]  //下面调用本身,实现上面逻辑的递归,只是入参会适当修改  if(r>left)  {sort(left, r, array);}  if(l<right) {sort(l, right, array);}     } //定义showArray方法 public void showArray(int arr[]) {  System.out.print("数组排序后为:");  //for循环打印  for(int i=0;i<arr.length;i++)  {     System.out.print(arr[i]+" ");  }  System.out.println(); } }

基本数据类型,string和包装类相互转换


 java中所有的类都从java.lang.Object类派生而来,在java语言中,除基本数据类型以外,基本数据类型有java类库体统了包装类:Integer类保存整形变量,Boolean类保存布尔变量,Float类保存单精度变量,

   基本数据类型与包装类、String类的互相转换

  1. 基本数据类型→包装类,调用包装类构造 int a = 10; Integer b = new Integer(a);
  2. 包装类→基本数据类型,调用包装类对象的**value(),Integer b = new Integer(10); int a = b.intValue()
  3. 包装类→String,调用包装类的对象的toString(),Intger b = new Integer(10); String str = b.toString();
  4. String→包装类,调用包装类的构造方法,String str = "10"; Integer b = new Integer(str);
  5. String→基本数据类型,包装类.valueOf(), int b = Integer.valueOf(str);
  6. 基本数据类型→String,调用包装类的toString();String str = Integer.toString(10);

    String与char数组的转:

  • String转换char数组,使用toString(),String str = "hello world"; char[] charArray = str.toString();
  • char数组转换String, char[] charArray = {'h','e','l','l','o'....}; str = new String(charArray);

JDK1.5以上的版本支持包装类与基本数据类型的直接转换,如

  • Integer a = 10;   自动封箱
  • int b = a;        自动拆箱

 java中所有的类都从java.lang.Object类派生而来,在java语言中,除基本数据类型以外,基本数据类型有java类库体统了包装类:Integer类保存整形变量,Boolean类保存布尔变量,Float类保存单精度变量,

   基本数据类型与包装类、String类的互相转换

  1. 基本数据类型→包装类,调用包装类构造 int a = 10; Integer b = new Integer(a);
  2. 包装类→基本数据类型,调用包装类对象的**value(),Integer b = new Integer(10); int a = b.intValue()
  3. 包装类→String,调用包装类的对象的toString(),Intger b = new Integer(10); String str = b.toString();
  4. String→包装类,调用包装类的构造方法,String str = "10"; Integer b = new Integer(str);
  5. String→基本数据类型,包装类.valueOf(), int b = Integer.valueOf(str);
  6. 基本数据类型→String,调用包装类的toString();String str = Integer.toString(10);

    String与char数组的转:

  • String转换char数组,使用toString(),String str = "hello world"; char[] charArray = str.toString();
  • char数组转换String, char[] charArray = {'h','e','l','l','o'....}; str = new String(charArray);

JDK1.5以上的版本支持包装类与基本数据类型的直接转换,如

  • Integer a = 10;   自动封箱
  • int b = a;        自动拆箱

 java中所有的类都从java.lang.Object类派生而来,在java语言中,除基本数据类型以外,基本数据类型有java类库体统了包装类:Integer类保存整形变量,Boolean类保存布尔变量,Float类保存单精度变量,

   基本数据类型与包装类、String类的互相转换

  1. 基本数据类型→包装类,调用包装类构造 int a = 10; Integer b = new Integer(a);
  2. 包装类→基本数据类型,调用包装类对象的**value(),Integer b = new Integer(10); int a = b.intValue()
  3. 包装类→String,调用包装类的对象的toString(),Intger b = new Integer(10); String str = b.toString();
  4. String→包装类,调用包装类的构造方法,String str = "10"; Integer b = new Integer(str);
  5. String→基本数据类型,包装类.valueOf(), int b = Integer.valueOf(str);
  6. 基本数据类型→String,调用包装类的toString();String str = Integer.toString(10);

    String与char数组的转:

  • String转换char数组,使用toString(),String str = "hello world"; char[] charArray = str.toString();
  • char数组转换String, char[] charArray = {'h','e','l','l','o'....}; str = new String(charArray);

JDK1.5以上的版本支持包装类与基本数据类型的直接转换,如

  • Integer a = 10;   自动封箱
  • int b = a;        自动拆箱

 java中所有的类都从java.lang.Object类派生而来,在java语言中,除基本数据类型以外,基本数据类型有java类库体统了包装类:Integer类保存整形变量,Boolean类保存布尔变量,Float类保存单精度变量,

   基本数据类型与包装类、String类的互相转换

  1. 基本数据类型→包装类,调用包装类构造 int a = 10; Integer b = new Integer(a);
  2. 包装类→基本数据类型,调用包装类对象的**value(),Integer b = new Integer(10); int a = b.intValue()
  3. 包装类→String,调用包装类的对象的toString(),Intger b = new Integer(10); String str = b.toString();
  4. String→包装类,调用包装类的构造方法,String str = "10"; Integer b = new Integer(str);
  5. String→基本数据类型,包装类.valueOf(), int b = Integer.valueOf(str);
  6. 基本数据类型→String,调用包装类的toString();String str = Integer.toString(10);

    String与char数组的转:

  • String转换char数组,使用toString(),String str = "hello world"; char[] charArray = str.toString();
  • char数组转换String, char[] charArray = {'h','e','l','l','o'....}; str = new String(charArray);

JDK1.5以上的版本支持包装类与基本数据类型的直接转换,如

  • Integer a = 10;   自动封箱
  • int b = a;        自动拆箱

常用类

Object (没有父类,其他类没有特殊说明,都继承Object)String类,Date

对于引用数据类型,双等号判断的是地址,比较内容用equals




原创粉丝点击