黑马程序员 JAVA基础 ---API常用类(二)

                          -----------android培训java培训java学习型技术博客、期待与您交流!------------

            在此,分享一下自己学习JAVA的学习心得。有不对的地方请帮忙改正,也希望对想java的同学有帮助!

JAVA基础

        ——API—常用类(二)


3)数组高级和Arrays类:

数组高级(排序和查找):

1、排序
   冒泡排序
   相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处

   选择排序
   从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处


Java练习代码:

public class Demo {
    //定义一个int数组,分别使用冒泡排序、选择排序进行升序、降序排序;
	//并说明排序后原数组是否发生了更改?
	public static void main(String[] args) {
		int[] arr = {2,5,45,6,23,11};
		selectSort(arr);//选择排序进行升序
		selectSort2(arr);//选择排序进行降序
		selectSort3(arr);//选择改良
		bubble(arr);//冒泡升序
		bubble2(arr);//冒泡降序
	}
	public static void printSort(int[] arr){
		String str = "[";
		for(int i = 0 ;i < arr.length ; i++){
			str += arr[i];
			if(i != arr.length - 1){
				str += ",";
			}
		}
		str += "]";		
		System.out.println(str);
	}
	//选择排序进行升序
	public static void selectSort(int[] arr){
		for (int i = 0; i < arr.length; i++) {
			for (int j = i+1; j < arr.length; j++) {
				if(arr[i] > arr[j]){
					int temp = arr[i];
					arr[i] = arr[j];
					arr[j] = temp;
				}
			}
		}
		printSort(arr);
	}
	//选择排序进行降序
	public static void selectSort2(int[] arr){
		for (int i = 0; i < arr.length; i++) {
			for (int j = i+1; j < arr.length; j++) {
				if(arr[i] < arr[j]){
					int temp = arr[i];
					arr[i] = arr[j];
					arr[j] = temp;
				}
			}
		}
		printSort(arr);
	}
	//选择排序改良
	public static void selectSort3(int[] arr){
		for(int k = 0 ;k < arr.length - 1 ; k++ ){
			int minIndex = k;
			for(int i = k + 1 ;i < arr.length ; i++){
				if(arr[minIndex] > arr[i]){
					minIndex = i;
				}
			}
			if(minIndex != k){
				int temp = arr[k];
				arr[k] = arr[minIndex];
				arr[minIndex] = temp;
			}		
		}
		printSort(arr);
	}
	//冒泡升序
	public static void bubble(int[] arr){
		for (int i = 0; i < arr.length - 1; i++) {
			for (int j = 0; j < arr.length - 1 - i; j++) {
				if (arr[j] > arr[j+1]){
					int temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
		}
		printSort(arr);
	}
	//冒泡降序
	public static void bubble2(int[] arr){
		for (int i = 0; i < arr.length - 1; i++) {
			for (int j = 0; j < arr.length - 1 - i; j++) {
				if (arr[j] < arr[j+1]){
					int temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
		}	
		printSort(arr);
	}
}

2、查找
   基本查找  数组元素无序
   二分查找  数组元素有序

Java练习代码:

public class Demo {
	/*
	 * 定义一个int数组,使用二分查找查找某个数; 
	 * */
	public static void main(String[] args) {
		int[] arr = {2,4,6,15,45,52,69,85,99,125,128};
		int num = 125;//定义要查找的数字num
		
		int minIndex = 0;	
		int maxIndex = arr.length - 1;
		int mindIndex = (minIndex + maxIndex) / 2;
		
		while (maxIndex >= minIndex) {
			
			if(num >= arr[mindIndex]){
				minIndex = mindIndex+1;
			}else if(num >= arr[mindIndex]){
				maxIndex = mindIndex-1;				
			}else{
				System.out.println("找到数字"+num+",该数字索引是"+mindIndex);	
				break;
			}
			mindIndex = (minIndex + maxIndex) / 2;
		}
		if(maxIndex < minIndex)
			System.out.println("没有找到该数字。");
	}
}


Arrays类概述及其常用方法:


Arrays类概述

针对数组进行操作的工具类。
提供了排序,查找等功能。


成员方法

public static String toString(int[] a):

返回指定数组内容的字符串表示形式。字符串表示形式由数组的元素列表组成,括在方括号("[]")中。


public static void sort(int[] a)
:

升序:从小到大。对指定的 int 型数组按数字升序进行排序。该排序算法是一个经过调优的快速排序法。


public static int binarySearch(int[] a,int key)
:

使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。必须在进行此调用之前对数组进行排序(通过 sort(int[]) 方法)。如果没有对数组进行排序,则结果是不确定的。如果数组包含多个带有指定值的元素,则无法保证找到的是哪一个。


Java代码:

import java.util.Arrays;
public class Demo {
	public static void main(String[] args) {
		int[] arr = {5,2,9,66,4,5,22,6,8,7};		
		Arrays.sort(arr);//对数组进行排序
		System.out.println("排序后:" + Arrays.toString(arr));//打印数组	
		//查找某个数;测试如果找不到会返回什么?
        System.out.println("查找数字1:"+Arrays.binarySearch(arr,1));//返回-1     
	}

}


4)基本类型包装类(Integer,Character)


基本数据类型的包装类:


   将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据。常用的操作之一:用于基本数据类型与字符串之间的转换。

 
 1.我们之前了解了四类八种的基本数据类型:
     byte Byte
     short Short
     int Integer
     long Long
     float Float
     double Double
     char Character
     boolean Boolean
   
  2.对于每种数据类型的包装类都有一些相关的方法,对此数据类型进行操作;
    Integer:
    Integer 类在对象中包装了一个基本类型 int 的值。Integer 类型的对象包含一个 int 类型的字段。 
        此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。 


Integer类成员方法:


int类型和String类型的相互转换
public int intValue()
public static int parseInt(String s)
public static String toString(int i)
public static Integer valueOf(int i)
public static Integer valueOf(String s)


Java代码:

public class Demo {

	/* 定义一个String,并将这个String转换为int。
	 * 定义一个int,并将这个int转换为String。
	 * (参考String类和Integer类的构造方法和成员方法,尝试使用多种方法)
	 */
	public static void main(String[] args) {
		
		//int--->String
		int num = 123;
		String str = String.valueOf(num);//使用String类的static valueOf(int i)
		System.out.println("字符串:"+str+",长度为:"+str.length());
		
		System.out.println("字符串:"+""+num);//使用0长度字符串进行字符串连接
		
		//String-->int
		String str2 = "123";
		//1.使用Integer的构造函数
		Integer intValue1 = new Integer(str2);
		int num2 = intValue1.intValue();		
		System.out.println("intValue = " + intValue1);		
		//2.使用Integer的toString()
		String str3 = intValue1.toString();
		System.out.println("str3 : " + str3);
		//3.使用Integer的valueOf(String str)
		Integer intValue2 = Integer.valueOf(str2);
		int num3 = intValue2.intValue();
		System.out.println("intValue2 = " + intValue2);
		//4.使用Integer的int parseInt(String s)
		int num4 = Integer.parseInt(str2);
		System.out.println("num4 =" + num4);								
	}

}


public class Demo {
	public static void main(String[] args) {
		System.out.println("MAX_VALUE :" + Integer.MAX_VALUE);
		System.out.println("MIN_VALUE :" + Integer.MIN_VALUE);
		System.out.println("SIZE : " + Integer.SIZE);
		Integer intValue = new Integer("200");		
	}
}

Integer类成员方法:


常用的基本进制转换
public static String toBinaryString(int i)
public static String toOctalString(int i)
public static String toHexString(int i)
十进制到其他进制
public static String toString(int i,int radix)
其他进制到十进制
public static int parseInt(String s,int radix)


JDK5的新特性:


从JDK5之后,基本数据类型和对应的包装类型,可以互相直接转换,这种方式叫:

自动装箱(基本数据类型-->包装类型)
自动拆箱(包装类型 --> 基本数据类型);


需要注意:
在使用时,Integer  x = null;上面的代码就会出现NullPointerException。


Java代码:

public class Demo {
	public static void main(String[] args) {
		Integer v1 = new Integer("20");
		Integer v2 = 200;//自动装箱;自动将基本数据类型转换为包装类型	
		int num = v1;//自动拆箱:将包装类型转换为基本数据类型;	
		Integer v3 = 20 + 30;//自动装箱
		Integer v4 = v1 + v2;//先拆箱,后装箱
		int sum = v1 + v2 + v3 + v4;//拆箱		
		Integer v5 = null;
		int n2 = v5;//java.lang.NullPointerException		
	}
}


思考:Integer i = 1; i += 1;做了哪些事情


public class Demo {
	public static void main(String[] args) {
		Integer i = 1;//自动装箱
		i += 1;//i = i + 1;//先拆箱,后装箱;
		System.out.println("i =" + i);
	}
}


Character类概述及其构造方法:


Character类概述
     Character 类在对象中包装一个基本类型 char 的值。此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然

构造方法


 public Character(char value)


Character类的成员方法:


  public static boolean isUpperCase(char ch):ch是否是个大写字符
  public static boolean isLowerCase(char ch):ch是否是小写字符
  public static boolean isDigit(char ch):ch是否是数字
  public static char toUpperCase(char ch):ch转换为大写字符
  public static char toLowerCase(char ch):ch转换为小写字符;

Java代码:

public class Demo {
	public static void main(String[] args) {
		char c = 'a';
		
		System.out.println("是否大写:" + Character.isUpperCase(c));//false
		System.out.println("是否小写:" + Character.isLowerCase(c));//true
		System.out.println("是否数字:" + Character.isDigit(c));//false
		
		System.out.println("转换为大写:" + Character.toUpperCase(c));//A
		System.out.println("转换为小写:" + Character.toLowerCase(c));//a
		
		
	}
}


未完待续--------------
5)正则表达式(Pattern,Matcher)
6)Math类/Random类/System类
7)BigInteger类/BigDecimal类
8)Date类/DateFormat类/Calendar类
























  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值