day11~12的代码

object类

Object: * protected Object clone() 深克隆:副本的影响不会对主对象造成影响 * 浅克隆:副本即本体,副本改变,本体改变 完完全全复制一个新的对象出来 * 创建并返回此对象的一个副本。 * boolean equals(Object obj) ***** * 指示其他某个对象是否与此对象“相等”。 * protected void finalize() *** * 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。 * Class<?> getClass() *** 反射 * 返回此 Object 的运行时类。 * int hashCode() *** * 返回该对象的哈希码值。 * String toString() ***** * 返回该对象的字符串表示。 * * 查看API时候需要重点看的地方: * 1.看包 * 2.看解释说明 * 3.看构造 * 4.看方法:再去看方法的解释说明 先看修饰符 然后返回值 再看是否需要传参已经参数类型 * * 在java中,hashcode默认返回是十进制的地址值 * equals使用的时候 比较引用类型的时候 直接比较地址值 如果你想比较具体的值,需要自己对equlas方法进行重写 * 怎么重写: source -- > hashcode AND equals方法 * 其实很多类里面都对equlas方法进行了重写操作 比如String * ==: 比较基本类型的时候 比较就是值是否相同 * 比较引用类型的时候 比较的就是地址值是否相同 * * String toString() ***** * 返回该对象的字符串表示。 * */ public class Demo1 implements Cloneable{ String name; String age; public Demo1(String name, String age) { super(); this.name = name; this.age = age; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((age == null) ? 0 : age.hashCode()); result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Demo1 other = (Demo1) obj; if (age == null) { if (other.age != null) return false; } else if (!age.equals(other.age)) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } @Override public String toString() { return "姓名=" + name + ", 年龄=" + age ; } public static void main(String[] args) throws CloneNotSupportedException { Demo1 demo1 = new Demo1("huguanyu","30"); Demo1 demo2 = new Demo1("huguanyu","30"); Demo1 d1 = demo1; Object obj = demo1.clone(); Demo1 d2 = (Demo1)obj; System.out.println(demo1.name); System.out.println(d1.name); System.out.println(d2.name); String s1 = new String("helloworld"); String s2 = "helloworld"; System.out.println(demo1 == demo2); System.out.println(demo1.equals(demo2)); System.out.println("----------------------------"); System.out.println(s1 == s2);//false System.out.println(s1.equals(s2));//true System.out.println(demo1.hashCode()); System.out.println(demo1); } 

String类

字符串是常量 常量的特点就是不可变; * 字符串其实底层默认就是一个char类型的数组,所以呢不管你存储什么基本类型 * 都会默认把此类型转成char类型所对应的ASCII表中的多对应的值,所以使用byte数组的时候 * 一定要注意 不是没打印 可能打印的你看不出来 * 构造方法 * public String() 创建一个空字符串对象 * public String(byte[] bytes)byte数组转成字符串对象 * public String(byte[] bytes,int offset,int length)byte数组的指定部分转成字符串对象 * public String(char[] value)char数组转成字符串 * public String(char[] value,int offset,int count)char数组的指定部分转成字符串对象 * public String(String original) 将字符串转成字符串 * */ public class Demo2 { public static void main(String[] args) { String s1 = "hello"; s1 += "world"; System.out.println(s1); byte[] b = new byte[]{97,98,99,100,101,102,103}; // char[] ch = {'a','b','c','d'}; String s = new String(b); System.out.println(s); String s2 = new String(b, 1, 5); System.out.println(s2); String s3 = new String("helloworld"); System.out.println(s3); System.out.println(s1 == s3); System.out.println(s1.equals(s3)); } 成员方法 判断功能 boolean equals(Object obj) 比较字符串的字符序列 boolean equalsIgnoreCase(String str) 比较字符串的字符序列 不关心大小写 boolean contains(String str) 是否包含某个字符串 boolean startsWith(String str) 以 ..... 开头 boolean endsWith(String str) 以 ..... 结尾 boolean isEmpty() 判断是否为空 * String concat(String s) 将指定字符串添加到另一个串的末尾 * * 课堂练习:模拟登录,给三次机会,并提示还有几次。 * */ public class Demo3 { public static void main(String[] args) { String s4 = null; String s = new String(""); String s1 = "abc"; String s2 = new String("abc"); System.out.println(s == s1);//false System.out.println(s == s2);//false System.out.println(s1 == s2);//false System.out.println(s.equals(s1)); System.out.println(s.equals(s2)); System.out.println(s1.equals(s2)); System.out.println(s.equalsIgnoreCase(s1)); System.out.println(s.equalsIgnoreCase(s2)); System.out.println(s.concat("d")); System.out.println(s.contains("a")); System.out.println("----------------"); System.out.println(s.startsWith("aB")); System.out.println(s.endsWith("bd")); System.out.println(s.isEmpty()); 获取功能 int length() 获取字符串长度 char charAt(int index) 根据角标求该角标对应的字符 int indexOf(String str) 根据字符求索引 String substring(int start) 截取字符串 String substring(int start,int end) 截取字符串 从start开始 到end结束 包头不包尾 (半开区间) * * 数组的长度 : length 是一个属性 * 字符串的长度: length() 这是一个方法 public static void main(String[] args) { String s1 = "woaijavawofeichangaijavagun"; System.out.println(s1.length()); char ch = s1.charAt(5); System.out.println(ch); int i = s1.indexOf("java"); System.out.println(i); System.out.println(s1.substring(5)); System.out.println(s1); System.out.println(s1.substring(5, 10)); } 转换功能 byte[] getBytes() 将字符串转换为byte数组 char[] toCharArray() 将字符串转换为char数组 static String valueOf(int i) 将int类型的数字转换为String String toLowerCase() 将字符串变为小写 String toUpperCase() 将字符串变为大写 public static void main(String[] args) { String ss = "hellojianguo"; byte[] bytes = ss.getBytes(); char[] ch = ss.toCharArray(); System.out.println(bytes); for (int i = 0; i < bytes.length; i++) { System.out.print((char)bytes[i]); } System.out.println(); System.out.println("==========================="); for (int i = 0; i < ch.length; i++) { System.out.print(ch[i]); } System.out.println(); System.out.println("==========================="); System.out.println(String.valueOf(true)); String sss = ss.toUpperCase(); System.out.println(sss); System.out.println(sss.toLowerCase()); System.out.println(ss.concat("好好学习,天天向上,争取拿到20K")); } 替换功能 String replace(char old,char new) String replace(String old,String new) 去除字符串头尾空格 String trim() 只能去除头和尾的空格 按字典顺序比较两个字符串 int compareTo(String str) 从头到尾依次做相减操作,会将每个位置上的字符转换为int类型的数字然后进行相减 如果位数不一样的情况下,但是从多余开始前面的元素都一样,那么返回值就是 多出来几位 返回几 int compareToIgnoreCase(String str) 切割 String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串。 public static void main(String[] args) { String ss = "helloworld"; System.out.println(ss.replace('l', 'L')); System.out.println(ss); System.out.println(ss.replace("world", "hadoop")); String s = " hello java world "; System.out.println(s.trim()); String s1 = "huguanyu"; String s2 = "huguanyuha"; int i = s1.compareTo(s2); System.out.println(i); String sss = "woaijavawoshifenaijavaniaimawobuaijavagun"; String[] sp = sss.split("java"); for (int j = 0; j < sp.length; j++) { System.out.print(sp[j]+" "); } } 

StringBuffer和StringBuilder

StringBuffer:线程安全的可变字符序列 字符串容器 可变的字符串 慢 * StringBuilder:一个可变的字符序列 线程不安全 快 * String:不可变的字符序列 * * * 添加功能 public StringBuffer append(String str) public StringBuffer insert(int offset,String str) 删除功能 public StringBuffer deleteCharAt(int index) public StringBuffer delete(int start,int end) 半开区间 包头不包尾 替换功能 public StringBuffer replace(int start,int end,String str) 反转功能 public StringBuffer reverse() * */ public static void main(String[] args) { StringBuffer sb = new StringBuffer("helloworld"); System.out.println(sb); System.out.println(sb.append("javaissoeasy")); System.out.println(sb); System.out.println(sb.insert(0, "woshidashazi")); System.out.println(sb); System.out.println(sb.deleteCharAt(0)); System.out.println(sb.delete(0, 5)); System.out.println(sb.replace(0, 5, "jiaochentao")); System.out.println(sb.reverse()); System.out.println(sb.substring(0, 10)); System.out.println(sb); } 
链式编程 StringBuffer sb2 = new StringBuffer("a"); System.out.println(sb2.append("b").append("c").append("d")); 

练习

// 课堂练习:模拟登录,给三次机会,并提示还有几次。 Scanner sc = new Scanner(System.in); for (int i = 1; i < 4; i++) { System.out.println("请输入账号"); String s = sc.next(); if (s == null || s.isEmpty()) { System.out.println("账号不能为空,请重新运行"); break ; } if (s.equals("天王盖地虎")) { System.out.println("登陆成功"); }else { System.out.println("登录失败,请重新输入账号"); System.out.println("还剩"+(3-i)+"次机会"); } } } //根据字符求索引 public static void main(String[] args) { String s = "hello"; //查找字符索引,如果没有返回-1 System.out.println(s.indexOf("eh")); //返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。 System.out.println(s.indexOf("ll", 0)); } // 需求:求java在此字符串中出现了多少次 String sss = "woaijavawoshifenaijavaniaimawobuaijavagunjavahahajavagoujava"; String[] sp = sss.split("java"); System.out.println(sp.length-1); // 使用index或者subString这两个方法去实现 建议使用index int i = sss.indexOf("java"); int num = 0; while ( i != -1) { num++; i = sss.indexOf("java", i+1); } System.out.println(num); /* * 字符串反转,例如键盘录入abc,输出cba 将字符串”axhhauububbuaa”中的字母”a,b”删除然后输出 截取字符串”中国你最美,中国你是我的祖国中”中的“中国”然后输出 * */ public class StringTest2 { public static void main(String[] args) { String s = "hello"; String s1 = ""; for (int i = s.length() - 1; i >= 0; i--) { s1 += s.charAt(i); } System.out.println(s1); System.out.println("========================="); String s2 = "axhhauububbuaa"; String[] sp = s2.split("a"); String s3 = ""; for (int i = 0; i < sp.length; i++) { String[] sarr = sp[i].split("b"); for (int j = 0; j < sarr.length; j++) { s3 += sarr[j]; } } System.out.println(s3); System.out.println("================================"); String ss1 = "中国你最美,中国你是我的祖国中"; String ss2 = "中国"; int in = ss1.indexOf(ss2); while(in != -1){ System.out.println(ss1.substring(in,in+ss2.length())); in = ss1.indexOf(ss2, in+1); } } //除重每种生一个 String str = "helloworldhelloaaabcccddd"; StringBuffer sb = new StringBuffer(str); for (int i = 0; i < sb.length()-1; i++) { for (int j = i+1; j < sb.length(); j++) { if (sb.charAt(i) == sb.charAt(j)) { sb.deleteCharAt(j); j--; } } } System.out.println(sb); System.out.println(); StringBuffer sb1 = new StringBuffer(); System.out.println(sb1.length()); for (int i = 0; i < str.length(); i++) { if (!sb1.toString().contains(String.valueOf(str.charAt(i)))) { sb1.append(str.charAt(i)); } } System.out.println(sb1); } 

排序和二分查找

/**
	 * 这是选择排序
	 * @param arr  需要传入一个int类型的数组
	 * @param flag	需要传入一个确定排序方式的布尔值  true为正序,false为倒序
	 */
	public static void sortArr(int[] arr,boolean flag){
		for (int i = 0; i < arr.length - 1; i++) {
			for (int j = i + 1; j < arr.length; j++) {
				if (flag ? arr[i] > arr[j] : arr[i] < arr[j]) {
					int temp = arr[i];
					arr[i] = arr[j];
					arr[j] = temp;
				}
			}
		}
		
		System.out.println(Arrays.toString(arr));
	}
	
	
	/**
	 * 这是冒泡排序
	 * @param arr  需要传入一个int类型的数组
	 * @param flag	需要传入一个确定排序方式的布尔值  true为正序,false为倒序
	 */
	public static void bubbleArr(int[] arr,boolean flag){
		for (int i = 0; i < arr.length - 1; i++) {
			for (int j = 0; j < arr.length - i - 1; j++) {		
				if (flag?arr[j] > arr[j+1] : arr[j] < arr[j+1]) {
					int temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
		}
		
		System.out.println(Arrays.toString(arr));
	}

	/**
	 * 二分查找
	 * @param arr
	 * @param key
	 */
	public static void binarySearch(int[] arr, int key) {
		int max = arr.length -1;
		int min = 0;
		int middle = (max + min)/2;
		
		
		while (min < max) {
			if (arr[middle] == key) {
				System.out.println(middle);
				return;
			}else if (key > arr[middle]) {
				
				min = middle + 1;
			}else if (key < arr[middle]) {
				
				max = middle - 1;
			}
			middle = (min + max) / 2;
		}
		
		System.out.println("不存在此数字");
	}

Arrays类

构造方法 public static String toString(int[] a) 打印字符串 public static void sort(int[] a) 此排序默认升序 不会做降序排序 public static int binarySearch(int[] a,int key) 二分查找 只能查升序 int[] arr = {5,10,16,78,95,100}; int key = 10; ArrayUtil.binarySearch(arr,key); int[] arr1 = {10,9,8,7,6,5,4}; System.out.println(Arrays.binarySearch(arr, 10)); System.out.println(Arrays.binarySearch(arr1, 10)); int[] arr2 = {5,6,7,4,2,3,1,97}; Arrays.sort(arr2); System.out.println(Arrays.toString(arr2)); 
基本类型包装类 构造方法: * Integer(int value) 构造一个新分配的 Integer 对象,它表示指定的 int 值。 Integer(String s) 构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。 此处的String中必须全部为数字 * * JDK1.5以后 java给所有的包装类提供了方便 * 提供了一个叫做自动拆箱操作 * 出了自动拆箱以外 还有自动装箱 * * 成员方法 * int类型和String类型的相互转换 int – String:直接相加空字符串 String – intpublic static int parseInt(String s) * * * 常用的基本进制转换 public static String toBinaryString(int i) 转成二进制 public static String toOctalString(int i) 转成八进制 public static String toHexString(int i)16进制 十进制到其他进制 public static String toString(int i,int radix) 十进制到任何进制 最低二进制 最高36进制 static String toString(int i) 返回一个表示指定整数的 String 对象。 其他进制到十进制 public static int parseInt(String s,int radix) 第一个参数代表你要转换的数字字符串 第二个参数是告诉系统 你前面的字符串属于什么类型 public static void main(String[] args) { Integer in = new Integer(10); System.out.println(in); Integer in1 = new Integer("123456"); System.out.println(in1); int i =20; Integer integer = new Integer(i); // 为什么可以运行成功 因为在此处做了自动拆箱操作 i = integer + i; System.out.println(i); // 这种写法就是自动装箱操作 Integer in2 = 100; String ss = in2 + "1234"; System.out.println(Integer.parseInt(ss)); String bs = Integer.toBinaryString(80); System.out.println(bs); String os = Integer.toOctalString(80); System.out.println(os); String ohx = Integer.toHexString(80); System.out.println(ohx); String str = Integer.toString(100, 2); System.out.println(str); System.out.println(Integer.toString(20)); System.out.println(Integer.parseInt("64", 8)); } 

​ Character类概述

Character 类在对象中包装一个基本类型 char 的值 此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然 构造方法 public Character(char value) * * * 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) * * * */ public class Demo7 { public static void main(String[] args) { Character ch = 'A'; // String s = “JKLhHKKjhkHKJHkgk*(n^*&6788)()9090JJLLJhbjkkljl”; // 统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符) Scanner sc = new Scanner(System.in); System.out.println("请输入一个字符串"); String line = sc.next(); int upper = 0; int lower = 0; int num = 0; for (int i = 0; i < line.length(); i++) { if (Character.isUpperCase(line.charAt(i))) { upper++; }else if (Character.isLowerCase(line.charAt(i))) { lower++; }else if (Character.isDigit(line.charAt(i))) { num++; } } System.out.println("大写字母有"+upper); System.out.println("小写字母有"+lower); System.out.println("数字有"+num); } } 

math成员方法

//public static int abs(int a) 求绝对值 //public static double ceil(double a) 向上取整 //public static double floor(double a) 向下取整 //public static double pow(double a,double b) a的b次方 //public static double random() 随机数 0.0 - 1.0 //public static int round(float a) 参数为double的自学 四舍五入 //public static double sqrt(double a) 平方根 //65535 port(端口号) //伪随机数 public class Demo11 { public static void main(String[] args) { System.out.println(Math.abs(13)); System.out.println(Math.abs(-13)); System.out.println(Math.ceil(13.2)); System.out.println(Math.ceil(-13.2)); System.out.println(Math.floor(-13.2)); System.out.println(Math.floor(13.2)); System.out.println(Math.pow(2, 16)); System.out.println(Math.random()); System.out.println(Math.round(3.5)); System.out.println(Math.sqrt(8)); } } 

system类

//System类概述 //System 类包含一些有用的类字段和方法。它不能被实例化。 //成员方法 //public static void gc() // 调运gc方法之前 你的保证你所要回收的对象处于null引用 // 垃圾回收机制 // finalize()垃圾回收器 //public static void exit(int status) //public static long currentTimeMillis() 当前时间的毫秒值 // 1566033662870 //public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length) //第一个参数:从哪个数组复制 //第二个参数:从原数组的第几个索引处开始复制 //第三个参数:目标数组 //第四个参数:从目标数组的第几个索引开始存储 //第五个参数:复制粘贴多少个元素 public class Demo12 { public static void main(String[] args) { long c = System.currentTimeMillis(); System.out.println(c); int[] arr = {1,2,3,4,6,7,8,9}; int[] arr1 = new int[10]; System.arraycopy(arr, 2, arr1, 0, 6); System.out.println(Arrays.toString(arr1)); } } 

Date类和simpleDate类

//2019年8月17号 17点45分..秒 //Date类概述 只能调用子类 //类 Date 表示特定的瞬间,精确到毫秒。 //构造方法 //public Date() //public Date(long date) //成员方法 //public long getTime() 将Date对象转换为对应的毫秒值 //public void setTime(long time) //SimpleDateFormat构造方法 //public SimpleDateFormat() //public SimpleDateFormat(String pattern) //成员方法 //public final String format(Date date) 将Date对象转换为字符串 //public Date parse(String source) 将字符串转为Date对象 public class Demo13 { public static void main(String[] args) throws ParseException { Date date = new Date(); System.out.println(date); Date d = new Date(1566033662870l); System.out.println(d); System.out.println(date.getTime()); date.setTime(1566033662870l); System.out.println(date); SimpleDateFormat sdf = new SimpleDateFormat("HH点mm分ss秒 yyyy年MM月dd号 "); System.out.println(sdf); String time = sdf.format(date); System.out.println(time); SimpleDateFormat sdf1 = new SimpleDateFormat("HH点mm分ss秒 yyyy年MM月dd号"); Date da = sdf1.parse(time); System.out.println(da); } } 

求自己出生多少天

import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Demo14 { public static void main(String[] args) throws ParseException { // 求出你出生了多少天了 String str = "1991年5月4日 14时30分00秒"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); Date date = sdf.parse(str); long time = date.getTime(); Date date2 = new Date(); long time2 = date2.getTime(); long l = time2 - time; double day = l / 1000 / 60 / 60 / 24; System.out.println(day); } } 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值