day16_常用API

day16_常用API

Integer
  • 八种包装类
public class Integer_02 {
public static void main(String[] args) {
//获取最大值和最小值
	System.out.println("int最大值:"+Integer.MAX_VALUE);
	System.out.println("int最小值:"+Integer.MIN_VALUE);
	System.out.println(Byte.MAX_VALUE);
	System.out.println(Long.MAX_VALUE);
	
//	创建Integer对象,int 类型转换为Integer类型
	Integer integer1 = new Integer(10);
//	可以直接把纯数学的字符串转换为Integer类型
	Integer integer2 = new Integer("123");
	System.out.println(integer1);
	System.out.println(integer2);
	
//	false,integer1 和integer2 是创建了Integer对象new出来的
//	其内存地址不一样,==比较内存地址
	System.out.println(integer1 == integer2);
	
//	覆写了equals方法 比较值是否相同
	System.out.println(integer1.equals(integer2));
}
}


类型转换上
public class Integer_03 {
	public static void main(String[] args) {
//1. 对象int--->Integer
		Integer integer1 = new Integer(10);
		
//		2. Integer  ---->int
		int integer2 = integer1.intValue();
		System.out.println(integer2);
		
//		3.static int parseInt(String s):把纯数字字符串转换成int类型
		int integer3 = Integer.parseInt("15945");
		System.out.println(integer3);
		
//		小数允许有一个小数点
		double d = Double.parseDouble("3.25");
		System.out.println(d);
		
//		将int类型的值转换成二进制的字符串表示形式
//		static String toBinaryString(int value);
		String s1= Integer.toBinaryString(12);
		System.out.println(s1);
		
//		转成十六进制
		System.out.println(Integer.toHexString(10));
		
//		转成八进制
		System.out.println(Integer.toOctalString(10));

//		int --->Integer
		Integer integer4 = Integer.valueOf(10);
//		String --->Integer
		Integer  integer5 = Integer.valueOf("10");
		System.out.println(integer4==integer5);
		
	}
}
类型转换中
public class Integer_04 {
	public static void main(String[] args) {

		// 1.int---->Integer
		Integer integer1 = Integer.valueOf(11);
		System.out.println(integer1);
		// 2. Integer--->int
		int integer2 = integer1.intValue();
		System.out.println(integer2);
		// 3.String --->String
		Integer integer3 = Integer.valueOf("22");
		System.out.println(integer3);
		// 4.Integer---->String
		String s1 = integer3.toString();
		System.out.println(s1);
		// 5.String---->int
		int integer4 = Integer.parseInt(s1);
		System.out.println(integer4);
		// 6.int--->String
		String s2 = 2 + " ";
		System.out.println(s2);
	
	}

}
类型转换下
  • JDK1.5开始 新特性
  • 自动装箱 :把 基本类型 自动转换为 对应的包装类类型
  • 自动拆箱: 把 对应的包装类类型 自动转换为 基本类型
  • 并且 自动装箱和自动拆箱是在编译阶段完成的
public class Integer_05 {
	public static void main(String[] args) {
		// 装箱和拆箱
				Integer i1 = Integer.valueOf(11);
				int i2 = i1.intValue();
				

				// 自动装箱和拆箱
				Integer i3 = 2;
				int i4 = i3;
				// 此时 10 是int类型,int是没有办法转换为Object类型的
				// 所以 需要把int 自动装箱为 Integer类型,然后发生多态,转换为Object类型
				m1(10);
			}
			public static void m1(Object obj){
				System.out.println(obj);
			}
	}
Integer总结
  • 深入理解自动装箱和自动拆箱

  • 1 都是编译时进行的操作

  • 2 自动装箱 的时候,会把赋值 操作 改变为 Integer.valueOf(值)

  • Integer.valueOf() 底层实现 :

  •   public static Integer valueOf(int i) {
     if (i >= IntegerCache.low && i <= IntegerCache.high)
         return IntegerCache.cache[i + (-IntegerCache.low)];
     return new Integer(i);
    

    }

  • 输入数字如果在Integer范围内,会在常量池中查找,没有返回一个新的Integer对象,如果在范围内则指向值

  • IntegerCache 是Integer中的静态内部类,也就是我们说的整型常量池

  •    	static final int low = -128;
             		static final int high = 127;
             		static final Integer cache[];
             	在static语句块中,对cache数组 进行初始化操作
             			  cache = new Integer[(high - low) + 1];  长度为256
             			  初始化数组中的数据
             			 cache[k] = new Integer(j++);
             		 数组中数据为 -128,-127,-126.....127  共 256个数字,下标为0~255
             		 
     
             		 此时 整型常量池就初始化完成了,在堆内存中创建了256个对象,
    
    valueOf方法中这么写的
    		// 判断 要赋值的数据值 是否在-128到127之间
     	if (i >= IntegerCache.low && i <= IntegerCache.high)
     		// 如果在这个范围内的话,之间在case数组中把对应的对象的地址拿出来,返回回去
         	return IntegerCache.cache[i + (-IntegerCache.low)];
         	// 如果不再这个范围内的话,就new一个新的对象,保存这个数据
     	return new Integer(i);
    
    
     所以 我们写 Integer i1 = 123;  Integer i2 = 123; 使用 == 是相等的,因为他们指向堆内存的地址都是同一个
    
     反之 我们写 Integer i3 = 128; 就等于 Integer i3 = new Integer(128) , 如果使用== 肯定是不等的
     需要使用equals才可以
    
public class Integer_06 {
	public static void main(String[] args) {
		// 自动装箱 = Integer.valueOf(123);
		// 整型常量池的范围 : -128~127之间
		Integer i1 = 123;
		Integer i2 = 123;
		// true
		System.out.println(i1 == i2);
		i1 = new Integer(123);
		i2 = new Integer(123);
		// false
		System.out.println(i1 == i2);

		// 这些写法 就等于 new Integer(128);
		i1 = 128;
		i2 = 128;
		// false
		System.out.println(i1 == i2);
	
		String s1 = "abc";
		String s2 = "abc";
		System.out.println(s1 == s2);
		s1 = new String("abc");
		s2 = new String("abc");
		System.out.println(s1 == s2);
	}

}
Date
日历类
public class Calendar_01 {
public static void main(String[] args) {
	// 获取日历对象
			Calendar c = Calendar.getInstance();
			// 获取当前是本周第几天, 第一天为周日,最后一天为周六
			int i = c.get(Calendar.DAY_OF_WEEK);
			System.out.println(i);
			// 获取年
			int year = c.get(Calendar.YEAR);
			// 获取月, 0开始,所以结果要加1
			int month = c.get(Calendar.MONTH) + 1;
			// 获取日
			int day = c.get(Calendar.DAY_OF_MONTH);
			// 时
			// int hour = c.get(Calendar.HOUR);
			// 24小时制
			int hour = c.get(Calendar.HOUR_OF_DAY);
			// 分
			int minute = c.get(Calendar.MINUTE);
			// 秒
			int second = c.get(Calendar.SECOND);
			// 获取星期
			int weekday = c.get(Calendar.DAY_OF_WEEK);
			String weekdayStr = getWeekday(weekday);
			System.out.println(year + "年" + month + "月" + day + "日 " + hour + ":"
					+ minute + ":" + second + " " + weekdayStr);
		}

		public static String getWeekday(int weekday) {
			String weekdayStr = "";
			switch (weekday) {
			case 1:
				weekdayStr = "星期日";
				break;
			case 2:
				weekdayStr = "星期一";
				break;
			case 3:
				weekdayStr = "星期二";
				break;
			case 4:
				weekdayStr = "星期三";
				break;
			case 5:
				weekdayStr = "星期四";
				break;
			case 6:
				weekdayStr = "星期五";
				break;
			case 7:
				weekdayStr = "星期六";
				break;
			default:
				break;
			}
			return weekdayStr;
		}
}

—————————————————————————————————

public class Date_01 {
	public static void main(String[] args) throws ParseException {
		// 获取当前系统时间
				Date d1 = new Date();
				// 获取时间原点到指定毫秒数的时间
				d1 = new Date(1000);
				System.out.println(d1);
				

				/**
				 * 年 y , 月 M , 日 d , 小时 H , 分 m , 秒 s , 毫秒 S
				 */
				// 创建格式化对象,并指定格式
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss SSS");
				// 对时间进行格式化,返回字符串类型
				String strDate = sdf.format(d1);
				// 1970年01月01日 08:00:01 000
				System.out.println(strDate);
				
				// 解析 , 字符串格式 必须和解析格式一致
				Date d2 = sdf.parse(strDate);
				System.out.println(d2);
		
	}

}
获取当前时间十分钟之前的时间
import java.text.SimpleDateFormat;
import java.util.Date;

public class Date_02 {
	public static void main(String[] args) {
		// 获取当前时间的毫秒数
		long time = System.currentTimeMillis();
		// 减去十分钟的毫秒数
		time -= 10*60*1000;
		// 转换为Date
		Date d = new Date(time);
		

		// 格式化
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
		System.out.println(sdf.format(d));
	}
}

System

  • System代表系统,系统很多的属性和控制方法都在这个类中,位与java.lang包下
  • long currentTimeMillis() : 获取当前系统时间的毫秒数 , 从1970-1-1 0:0:0 000开始 到现在的时间毫秒数
  • 我们这个地区 时间为 1970.1.1 8:00:00 000
  • void exit(int status) : 退出虚拟机, 参数为0 表示正常退出 非0 表示异常退出,常用于图形界面,实现退出功能
public class System_01 {
	public static void main(String[] args) {
		// 计算时间差
		long startTime = System.currentTimeMillis();
		String[] strs = { "a", "b", "c", "d", "e", "f", "a", "b", "c", "d" };
		String temp = "";
		// for (int i = 0; i < strs.length; i++) {
		// temp += strs[i] + ",";
		// }
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < strs.length; i++) {
			sb.append(strs[i] + ",");
		}
		temp = sb.toString();
		System.out.println(temp);
		long endTime = System.currentTimeMillis();
		// 关闭JVM , 0 正常退出, 非0 异常退出, 一般用于关闭图形界面
		System.exit(0);
		System.out.println("耗时 : " + (endTime - startTime) + "毫秒");
	}
}

Math
  • Math 提供科学计算和基本的数字操作,常用方法都是静态的,使用类名直接调用即可
  • 在java.lang下,使用不需要导包
public class Math_01 {
	public static void main(String[] args) {
			// abs 绝对值    1.2 
			System.out.println(Math.abs(-1.2));
			// ceil : 向上取整   2.0  
			System.out.println(Math.ceil(1.0001));
			// floor : 向下取整  2.0  
			System.out.println(Math.floor(2.999999));
			// max : 比较谁大   2.3 
			System.out.println(Math.max(2.3, 2.2));
			// min : 比较谁小  2.2
			System.out.println(Math.min(2.3, 2.2));
			// 平方根  开平方    4 
			System.out.println(Math.sqrt(16));
			// 立方根  开立方    2 
			System.out.println(Math.cbrt(8));
			// 随机数 : 获取一个大于等于0 且 小于1 的数    0.05482041867913556
			System.out.println(Math.random());
			// 向下取整( 随机数*(最大-最小 +1) + 最小)  
//			13.799353961927014   获取的是10~20之间的随机数
//			
			System.out.println(Math.random()*10 + 10);
			// 四舍五入 : 四舍六入五留双, 小数大于0.5 就进位,小于0.5就舍弃,如果是0.5整 , 取偶数
			// 2.50001 : 3  , 3.50000 : 4 , 2.50000 : 2
			System.out.println(Math.rint(2.5001));
			// 2的3次方
			System.out.println(Math.pow(2, 3));
	}
	  
}
BigInteger
高精度Integer类
public class BigInteger_01 {
	public static void main(String[] args) {
		// 参数是字符串
		BigInteger v0 = new BigInteger("11");
		// 参数是数值
		BigDecimal v1 = new BigDecimal(20);
		BigDecimal v2 = new BigDecimal(10);
		
		// + 
		BigDecimal v3 = v1.add(v2);
		// -
		v3 = v1.subtract(v2);
		// *
		v3 = v1.multiply(v2);
		// /
		v3 = v1.divide(v2);
		// %
		v3 = v1.remainder(v2);
		System.out.println(v3);
		System.out.println(Long.MAX_VALUE);
		BigDecimal sum = new BigDecimal(1);
		for (int i = 1; i <=100; i++) {
			sum = sum.multiply(new BigDecimal(i));
		}
		System.out.println(sum);
	}
}

#### Random 随机数

public class Random_01 {
	public static void main(String[] args) {
		// 创建随机数生成器
		Random r = new Random();
		// 大于等于0 且小于10的整数
		int result = r.nextInt(10);
		System.out.println(result);

		// 生成 10~20
		// nextInt(最大值 - 最小值 +1) + 最小值
		result = r.nextInt(11) + 10;
		System.out.println(result);
	
		// 生成a~z
		result = r.nextInt(26);
		char c = (char) (result + 97);
		System.out.println(c);
	}
}

你可能感兴趣的:(Java,java,算法,golang)