黑马程序员——Java常用类笔记(上)【Object类/Scanner类、String类/StringBuffer类、包装类】

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


一、Object类/Scanner类


1,Object类概述
类层次结构的根类,所以类都直接或间接继承自该类.
 
构造方法
public Object(); public 权限的空参数构造器,第一行没有super
成员方法
public int hashCode()
含义:返回调用者的哈希地址
public final Class getClass()
含义:返回此 Object 的运行时类
public String toString()
含义:返回对象的字符串表现形式重写toString方法,类中的成员变量,返回即可
     
public boolean equals(Object obj)
含义:比较对象是否相等.
重写equals方法,建立对象自己的比较方式比较对象中成员变量值
重写要注意健壮性判断,防止空指针,类型转换异常


2, Scanner类概述
JDK5以后用于获取用户的键盘输入
构造方法
public Scanner(InputStream source)


基本格式
hasNextXxx() 判断是否还有下一个输入项,
其中Xxx可以是Int,Double等
如果需要判断是否包含下一个字符串,则可以省略Xxx
nextXxx() 获取下一个输入项
 默认情况下,Scanner使用空格,回车等作为分隔符.

常用方法
public int nextInt()
public String nextLine()


示例(Scanner类):

// 导入包
import java.util.Scanner;

class KeiOut{
	public static void main(String[]args){

		//创建具有键盘录入功能的对象
		Scanner sc=new Scanner(System.in);
		//为判断,录入的步骤.....
		// 对象调用 接收键盘输入的整型数字  的方法
		int x=sc.nextInt();
		
		System.out.println("请输入");
		char ch=(char)x; //强转换

		switch (ch)
		{
		case 'A':   //单引号
			System.out.println("美国队长");
			break;
		case "B":
			System.out.println("中国队长");
		    break;
		default:
			System.out.println("没有这玩意");
			break;
		}
	}
}

二、String类/StringBuffer类/SringBuilder类


1,String类概述
字符串是由多个字符组成的一串数据(字符序列)
字符串可以看成是字符数组


1)构造方法
public String()
public String(byte[] bytes)
public String(byte[] bytes,int offset,int length)
public String(char[] value)
public String(char[] value,int offset,int count)
public String(String original)
小结:
1.1\字节数组变成字符串; 构造方法传递字节数组,查询编码表
1.2\字符数组变成字符串; 构造方法传递字符数组,不查询编码表
    
2) 判断方法
2.1 equals 比较两个字符串是不是完全相等
2.2 equalsIgnoreCase 比较两个字符串是不是完全相等,不管大小写
2.3 startsWith 判断字符串是不是令一个字符串开头
2.4 endsWith 判断字符串是不是令一个字符串结尾
2.5 contains 判断一个字符串是不是包含另一个字符串
2.6 isEmpty

   
3) 获取方法
3.1 charAt 根据索引获取指定的单个字符
3.2 indexOf 查找字符第一次出现的索引
3.3 lastIndexOf 查找字符最后一次出现的索引
3.4 length 获取字符串长度
3.5 substring 获取字符串一部分

4) 转换方法
4.1 getBytes 字符串变成字节数组 查询编码表
4.2 toCharArray 字符串变成字符数组,不查编码表
4.3 toUpperCase 转大写
4.4 toLowerCase 转小写


5) 其他方法
5.1 split 切割字符串,返回新的字符串的数组
5.2 repalce 替换字符串
5.3 trim 去掉两端空格
5.4 compareTo 字典顺序比较字符串 返回值为int


示例1(字符串常量不变性)

public static void method(){
	String s1="你好";
	String s2="吗";
	String s3="你好吗";
	//参与运算的s1 s2是变量,在编译时期不确定相加后的值是什么
	//运行期间虚拟机会对变量相加后的结果从新开辟空间,分配新的地址
	//因此两个地址不同,所以输出为false
	System.out.println(s3==(s1+s2));

	//参与运算的是字符串常量,固定不变.编译时已经确定了计算结果
	//同一个地址.输出为true
	System.out.println(s3=="你好吗");
}

示例2

public static void method(){
	String s="abc";
	System.out.println(s);

	//s类型的变量从新指向dfe字符串对象
	s="dfe";
	//输出为dfe.//不是字符串常量发生了变化,而是变量s重新指向了新的空间
	System.out.println(s);
}

面试题:String s = new String("hello")和String s="hello";的区别?
前者创建了两个对象,一个是"hello",另一个是对象s指向的new String("hello")
后者创建了一个对象"hello"


示例3(字符串反转)

/*
	 * 需求: 把字符串反转,返回为字符串.如"adfgwr";
	 * 思路:字符串转化为字符数组进行操作
	 */
	public static String method_2(String st) {
		char[] ch = st.toCharArray();
		for (int i = 0, j = ch.length - 1; i < j; i++, j--) {
			char temp = ch[i];
			ch[i] = ch[j];
			ch[j] = temp;
		}
		return new String(ch);
	}

示例4(subString方法的应用)

// 统计java在长字符串中出现的次数
	public static void method(String str){
		//String str="adfjavadfagjavaafja";
		int count=0;
		for(int i=0;i<str.length()-3;i++){
			//使用subString方法获得字符串的一部分并返回
			String s=str.substring(i,i+4);
			if("java".equals(s)){
				count++;
			}
		}
		System.out.println(count);
	}

2, StringBuffer类概述
StringBuffer类在拼接字符串方面.更快速,更节省空间.

1)构造方法
public StringBuffer() 
public StringBuffer(int capacity)
public StringBuffer(String str)


2)添加功能
public StringBuffer append(String str)
public StringBuffer insert(int offset,String str)


3)删除功能
public StringBuffer deleteCharAt(int index)
public StringBuffer delete(int start,int end)


4)替换功能
public StringBuffer replace(int start,int end,String str)


5)反转功能  
public StringBuffer reverse()


6)截取功能
public String substring(int start)
public String substring(int start,int end)
返回值类型是String类型,本身没有发生改变


7)String和StringBuffer的相互转换:
String s= buffer.toString();//将StringBuffer类型转为String类型
//将String类型转为StringBuffer类型
StringBuffer buffer = new StringBuffer(String s);

示例:拼接字符串,使用append()

public static String method_1() {
		char[] ch="adsfgl".toCharArray();
		// 构造一个空字符串缓冲区
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < ch.length; i++) {
			// 追加序列的方法(向sb的缓冲区追加序列)
			sb.append(ch[i]);
		}
		// 返回字符串
		return sb.toString();
}

示例:把字符串反转,使用reverse()
public class ReverseDemo {
/**
 * 反转字符串
 * 提供一个字符串"asfg"
 * 返回一个字符串"gfsa"
 * 利用reverse方法public StringBuffer reverse()
 * */
	public static void main(String[] args) {
		String s="asfg";
		System.out.println(method( s ));
	}
	public static String method(String s ){
		StringBuffer buff=new StringBuffer(s);
		//利用了reverse()返回值是StringBuffer类型; 
		//再调用toString()转为字符串类型.
		return buff.reverse().toString();
	}
}

示例:判断字符串是不是对称

public static void main(String[] args) {
		String s="abccba";
		System.out.println(method1( s ));
	}
	public static boolean method1(String s ){
		StringBuffer buff=new StringBuffer(s);
		//利用了reverse()返回值是StringBuffer类型; 
		//再调用toString()转为字符串类型.再调用equals(s)判断是否反转后两个字符内容一致.
		return buff.reverse().toString().equals(s);
	}

3,SringBuilder类与StringBuffer类的异同
SringBuilder类与StringBuffer类中的方法完全一样.
StringBuffer类  线程安全,运行速度慢
SringBuilder类  线程不安全,运行速度快.


三,数组高级和Arrays类


1,数组高级(排序和查找)

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

public static void bubbleSort(int[]arr){
	for(int i=0;i<arr.length;x++){
		for(int j=0;j<arr.length-i-1;j++){
			if(arr[j]>arr[j+1]){
				int temp=arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=temp;
			}
		}	
	}
}
示例:选择排序法
从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,
最小值出现在了最小索引处
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;
		}
	}
}



示例:查找法

public class SearchDemo {

	public static void main(String[] args) {
		int arr[]={12,44,77,33};
		System.out.println(searchIndex(arr,44));

	}
	public static int searchIndex(int arr[],int key){
		for( int i=0;i<arr.length;i++){
			if (arr[i]==key){
				return i;
			}
		}
		return -1;
	}

}


数组元素有序时,用循环二分查找法
示例:

public class BinarySearchDemo {

	public static void main(String[] args) {
		int[] arr = { 1, 2, 3, 4, 5, 6 };
		System.out.println(binarySearch(arr,2));
	}

	public static int binarySearch(int[] arr, int key) {
		//头下标
		int start = 0;
		//尾下标
		int end = arr.length - 1;
		//中间下标
		int mid = (start + end) / 2;
		while(start<=end) {
			//当key等于arr[mid]时,也即找到了key,返回mid
			if(key==arr[mid]) {
				return mid;
				//情况一时,调整指针start和mid值
				//不断调整直至key==arr[mid]
			} else if(key>arr[mid]) {
				start=mid+1;
				mid=(start+end)/2;
				//情况二时,调整指针end和mid值,
				//不断调整直至key==arr[mid]
			} else{
				end=mid-1;
				mid=(start+end)/2;
			}
			
		}
		//没有找到,返回-1;
		return -1;
	}
}

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


成员方法:
//将数组转为字符串
public static String toString(int[] a)
//将数组进行排序
public static void sort(int[] a)
//有序数组进行二分查找
public static int binarySearch(int[] a,int key)


四、基本类型包装类(Integer,Character)



1) 包装类的好处:


将基本数据类型封装成对象的好处在于


可以在对象中定义更多的功能方法操作该数据。


2) 常用的操作之一:用于基本数据类型与字符串之间的转换。


3) 八种基本数据类型所对应的包装类:


Byte,Short,Integer,Long,Float,Double, Character,Boolean


1,Integer类概述


Integer 类在对象中包装了一个基本类型 int 的值


该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,


还提供了处理 int 类型时非常有用的其他一些常量和方法.


1)构造方法
//将整型转换为Integer类型
public Integer(int value)
//将数字形式的字符串转换为Integer类型
public Integer(String s)

2)成员方法


【返回值为int类型】


//将Integer类型转换为整型
public int intValue()
//将数字形式的字符串类型转换为整型
public static int parseInt(String s)
//将指定进制的数字形式的字符串转换为整型
public static int parseInt(String s,int radix)


【返回值为String类型】


//String类中的静态方法:将十进制整型转换为字符串类型
public static String valueOf(int i)
String s = String.valueOf(97);


//将十进制的整型转换为字符串
public static String toString(int i)
String s = Integer.toString(97);


//将十进制整型转换为指定进制形式的字符串
public static String toString(int i,int radix)


【返回值为Integer类型】


//返回整型对应的Integer实例
public static Integer valueOf(int i)
//将数字形式的字符串转换为Integer实例
public static Integer valueOf(String s)
//将指定进制的数字形式的字符串Integer实例
public static Integer valueOf(String s,int radix)


【常用的基本进制转换】
//十进制转换为二进制
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)


3)JDK1.5以后,简化了定义方式。
Integer x = new Integer(4);可以直接写成
Integer x = 4;//自动装箱。
x  = x + 5;//自动拆箱。

2,Character类概述:


该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),
并将字符从大写转换成小写,反之亦然.


1)构造方法

public Character(char value);

2)成员方法
//判断字符的大小写
public static boolean isUpperCase(char ch)
public static boolean isLowerCase(char ch)
//判断字符是不是数字形式
public static boolean isDigit(char ch)
//大小写字符互相转换
public static char toUpperCase(char ch)
public static char toLowerCase(char ch)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值