java第三章----API

API总结

​ API Application Programming Interface,应用程序编程接口

Object类

​ hashcode与equals (与==的区别) tostring getClass clone

clone方法实现
public class Plixa {
	public static void main(String[] args) throws CloneNotSupportedException {
		person p = new person();
		Object object = p.clone();
//		System.out.println(object.name);  //直接调用子类对象调不到,子类独有的属性
		person person = (person) object;  //向下转型
		System.out.println(person.name);
	}
}
class person implements Cloneable{
	String name = " zhangsan ";
	int age;
	public Object clone() throws CloneNotSupportedException{
		return super.clone();
	}
}
String类*************
空串与null的区别

​ null没有地址值 空串有地址值 长度为0;

构造方法

new String(byte[],offset,length

new String(char[],offset,length)

String的内存分析

​ 直接赋值存放于常量池中,仅有一份 ;当有变量时当成是new出来的,存放在堆

​ s+=“haha” 存放在堆内存中

​ s=“hello” + “world” // 先在常量池查有没有hello 和world 没有就先创建,然后拼成 helloworld ,如果常量池没有helloworld,就创建一个,如果有了就不再创建,因此会开辟三个空间

String与byte[] char[] int相互转换

byte数组与字符串相互转换 getbytes new String(byte[])

char数组与字符串相互转换 tocharArray new String(char[]) String.valueOf(char[])

int与字符串相互转换 String.valueOf(int) Integer.valueOf(str) Integer.parseInt(str)

成员方法
StringStringBuffer
共有方法equals length subString charAt indexOfequals length subString charAt indexOf
concatappend insert(index,str)
trimdelete(start,end)
replace(str1,str2) toUpperCase toLowerCasereplace(start,end,str)
charAt(index) indexOf(str,index) contains(调用的equals), startswith endswith isEmpty conpareTocharAt(index) indexOf(str,index)
独有reverse
大多有返回值大多在原串上进行修改的,比字符串更方便

例题

public class Patrenaza {
	public static void main(String[] args) {
		// 字符串中java出现的次数
		String s = "woaijavafeichangaijavaheiaijavabuzhidaoniaibuaijavanejava";
		// 第一种方法
		int count = 0;
		/*
		 * String[] sp = s.split("java"); if(s.endsWith("java")){ count =
		 * sp.length; }else{ count = sp.length-1; }
		 */
		// 第二种方法
		int i = s.indexOf("java");
		while (i != -1) {
			count++;
			i = s.indexOf("java", ++i);//此时index必须加1,否则会一直循环 i++也会一直循环
		}
		System.out.println(count);
	}
}
StringBuffer类*************
String与StringBuffered区别:

​ 只有一份 线程安全

​ StringBuiled与StringBuffered区别:

​ builder是线程不安全的,但如果只是单线程,那么就可以用这个,其方法和buffer相同

​ 如果要操作少量的数据,用String ;
​ 单线程操作大量数据,用StringBuilder ;
​ 多线程操作大量数据,用StringBuffer。

构造方法

​ new StringBuffer(string) s.tostring //StringBuffer转string

数组高级

​ 排序 : 选择排序 冒泡排序 二分查找(必须是有序的)

import java.util.Arrays;

public class Plixa {
	public static void main(String[] args) {
		int[] arr ={12,24,98,8,74,63};
		// 选择排序
		/*for(int i = 0 ;i < arr.length-1;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;
				}
			}
		}
		System.out.println(Arrays.toString(arr));*/
		//冒泡排序
		for(int i = 1; i < arr.length;i++){
			for(int j = 0;j < arr.length-i;j++){
				if(arr[j]>arr[j+1]){
					int temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1]= temp;
				}
			}
		}
		System.out.println(Arrays.toString(arr));
		//二分查找  先将数组顺序排列
		System.out.println(binarySearch(arr, 63));
		System.out.println(binarySearch(arr, 110));

	}
	public static int binarySearch(int[] arr, int num) {
		int start = 0;
		int end = arr.length - 1;
		while (start <= end) {
			int middleindex = (start + end) / 2;
			int middle = arr[middleindex];
			if (num == middle) {
				return middleindex;
			} else if (num < middle) {
				end = middleindex - 1;
			} else {
				start = middleindex + 1;
			}
		}
		return -1;
	}
}
Arrays类

​ Arrays.toString() 转为字符串 Arrays.aslist() 构建数组

​ Arrays.sort() 升序排序 Arrays.binarysearch(arr,key) 二分查找,只针对升序

包装类

​ 包装类出现:Object是万类之祖,但不包含基本类型,所以在集合中不带他们玩

Integer

​ 进制之间的转换

Character

​ 对单个char进行判断 大小写数字及转换等

​ Character.isLowerCase Character.toLowerCase

习题:统计字符串中大写字母,小写字母,数字出现的次数

public class MapDemo {
	public static void main(String[] args) {
		String s = "ajdjlLJLAJSLF89979asdaJKJ9sa12";
		int count1 = 0;
		int count2 = 0;
		int count3 = 0;
		//转为char数组
		/*char[] charArray = s.toCharArray();
		for(int i =0 ; i< charArray.length;i++){
			if(Character.isUpperCase(charArray[i])){
				count1++;
			}else if(Character.isLowerCase(charArray[i])){
				count2++;
			}else{
				count3++;
			}
		}
*/
		//使用charat
		for(int i =0;i<s.length();i++){
			if(Character.isUpperCase(s.charAt(i))){
				count1++;
			}else if(Character.isLowerCase((s.charAt(i)))){
				count2++;
			}else {
				count3++;
			}
		}
		System.out.println(count1);
		System.out.println(count2);
		System.out.println(count3);
	}
}
BigInteger类

​ 用于对超过int范围的数值进行计算, 构造方法中传入的是str类型(由于其可能超出int)

​ add substract multiple divide divideandreminder 返回的是个数组 分别是整数和余数

BigDicemal类

​ 防止精度损失,构造方法中传入String(最好不要用int,) 此时divide得到小数,

​ divide还有一种方法, divide(b2,int 保留位数,int 进位规则)

math

​ abs pow sqrt

Random类

​ 构造方法中无参是以当前时间做为种子,new Random(long seed) r.nextint(20)

system类*************

​ filelize() 回收垃圾 final修饰类方法变量, finally一定执行

​ system.exit(0) 强制退出jvm 比return更狠

system.crrentTimeMillis()当前毫秒值,用于测试方法执行效率 random的无参构造中的种子

​ system.nanotime() 纳秒值 用于声称序列号

​ systemarraycopy(src, index,dest,index,length) 拷贝数组

Date类*************

​ 日期和时间放在一起了

​ 构造方法 new Date(long ) 传入的是个long值 1232149214L

​ 成员方法 date.getTime( ) date.setTime(long)

​ 获取当前毫秒值的两种方法 new date().getTime() system.currenttimemillis

simpleDateFormat类*************

​ 日期格式的转换 把date转成我们想要的日期格式

​ 构造方法 new simpleDateFormat(“pattern”)

​ 成员方法 format (日期转为字符串)

​ parse(String转成date) 主要是转成date后 可以得到毫秒值用于计算

​ 字符串日期格式必须和格式相同

例题. 将2020/01/07 16:35:21 转成 16:35:21 2020-01-07

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class MapDemo {
	public static void main(String[] args) throws ParseException {
		// 将2020/01/07 16:35:21 转成 16:35:21 2020-1-7
		Date date1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").parse("2020/01/07 16:35:21");
		String str = new SimpleDateFormat("HH:mm:ss yy-M-d").format(date1);
		System.out.println(str);

	}
}
正则表达式(Pattern类)
匹配功能

​ String.mathches(regex)

​ \d 数字 \w字母或数字 \s 空白字符 要两个\ \D非数字 \s 空白 \S 非空白 \b 单词的边界

​ ?0次或1次 * 0或多 + 至少一次 . 代表一个字符

分割功能

​ String.split() 文件路径分割

import java.util.Arrays;
//将字符串  排序后打印
public class Patrenaza {
	public static void main(String[] args) {
		String s = "19 89 76 3 15";
		String[] str = s.split(" ");
		int[] arr = new int[str.length];
		for (int i = 0; i < str.length; i++) {
			arr[i] = Integer.valueOf(str[i]);
		}
		Arrays.sort(arr);
		String output = "";
		for (int i : arr) {
			output += i + " ";
		}
		System.out.println(output.trim());
	}
}
替换功能

​ String.replaceAll()

public class Patrenaza {
	public static void main(String[] args) {
		String s = "15710313872";
		System.out.println(s.replaceAll("(\\d{3})(\\d{4})(\\d{4})", "$1****$3"));
		String id = "130185197307128713";
		System.out.println(id.replaceAll("(\\d{6})(\\d{8})(\\d{4})", "$1********$3"));
	}
}
获取功能***************

​ Pattern macher

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Patrenaza {
	public static void main(String[] args) {
		String str = "jin tian yao xia yu, da jia pa bu pa? huang bu huang? are you sure";
		// 创建Pattern对象 传入一个正则表达式
		Pattern p = Pattecern.compile("\\b[a-zA-Z]{3}\\b");
		// 调用 p对象中的matcher方法,获取匹配器对象
		Matcher matcher = p.matcher(str);
		int count = 0;
		while (matcher.find()) { // find一次,才能打印一次
			System.out.println(matcher.group()); // group必须要和find一起使用
			count++;
		}
		System.out.println(count);
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值