数组和常用类(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类保存单精度变量,
- 基本数据类型→包装类,调用包装类构造 int a = 10; Integer b = new Integer(a);
- 包装类→基本数据类型,调用包装类对象的**value(),Integer b = new Integer(10); int a = b.intValue()
- 包装类→String,调用包装类的对象的toString(),Intger b = new Integer(10); String str = b.toString();
- String→包装类,调用包装类的构造方法,String str = "10"; Integer b = new Integer(str);
- String→基本数据类型,包装类.valueOf(), int b = Integer.valueOf(str);
- 基本数据类型→String,调用包装类的toString();String str = Integer.toString(10);
- 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类保存单精度变量,
- 基本数据类型→包装类,调用包装类构造 int a = 10; Integer b = new Integer(a);
- 包装类→基本数据类型,调用包装类对象的**value(),Integer b = new Integer(10); int a = b.intValue()
- 包装类→String,调用包装类的对象的toString(),Intger b = new Integer(10); String str = b.toString();
- String→包装类,调用包装类的构造方法,String str = "10"; Integer b = new Integer(str);
- String→基本数据类型,包装类.valueOf(), int b = Integer.valueOf(str);
- 基本数据类型→String,调用包装类的toString();String str = Integer.toString(10);
- 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类保存单精度变量,
- 基本数据类型→包装类,调用包装类构造 int a = 10; Integer b = new Integer(a);
- 包装类→基本数据类型,调用包装类对象的**value(),Integer b = new Integer(10); int a = b.intValue()
- 包装类→String,调用包装类的对象的toString(),Intger b = new Integer(10); String str = b.toString();
- String→包装类,调用包装类的构造方法,String str = "10"; Integer b = new Integer(str);
- String→基本数据类型,包装类.valueOf(), int b = Integer.valueOf(str);
- 基本数据类型→String,调用包装类的toString();String str = Integer.toString(10);
- 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类保存单精度变量,
- 基本数据类型→包装类,调用包装类构造 int a = 10; Integer b = new Integer(a);
- 包装类→基本数据类型,调用包装类对象的**value(),Integer b = new Integer(10); int a = b.intValue()
- 包装类→String,调用包装类的对象的toString(),Intger b = new Integer(10); String str = b.toString();
- String→包装类,调用包装类的构造方法,String str = "10"; Integer b = new Integer(str);
- String→基本数据类型,包装类.valueOf(), int b = Integer.valueOf(str);
- 基本数据类型→String,调用包装类的toString();String str = Integer.toString(10);
- 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。
- 数组和常用类(8.11)
- 常用类和数组习题
- 数组排序和常用类
- 字符串和数组常用方法
- 常用对象API(StringBuffer类-可变长度数组和StringBuffer(int capacity))
- javase重新开始系列之数组和常用类
- java-数组和arrays类的常用方法
- 数组的学习和常用方法总结(2)
- Objective-C中数组(NSArray和NSMutableArray)常用用法
- 数组及其常用类
- 树状数组和线段树常用模型
- 数组常用的方法和案例
- 笔记:数组和集合的常用排序
- 【C++】指针和数组的常用方法
- 字符串方法,和数组常用方法
- 数组和字符串常用方法总结
- JavaScript数组定义和常用运算符
- JavaScript常用字符串和数组操作归纳
- Perceptron(一)
- linux下修改mysql的root账号的密码
- dp基础10 -- H
- 2017百度之星初赛(A) 1001 小C的倍数问题(基础数论)
- POJ 2657 Comfort
- 数组和常用类(8.11)
- java 图书馆管理系统(面向接口编程)
- How can we identify the weights of different models for ensemble?
- cygwin使用Windows下的python
- Sort it
- 配置文件报错:不允许有匹配 "[xX][mM][lL]" 的处理指令目标
- 利用UiAutomator和httpclient写自动发表笑话到微信朋友圈功能
- HDU 1171-Big Event in HDU
- 2017"百度之星"程序设计大赛