栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Day16

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Day16

一、包装类

  1.  是什么
    1.  
  2. 基本使用
  3. public static void main(String[] args) {
    		// 基本类型
    		byte b = 10;
    		// 转换为引用类型
    		Byte b1 = new Byte(b);
    		Integer i1 = new Integer(11);
    		Boolean b2 = new Boolean(false);
    		// 方法调用传递
    		m1(b1);
    	}
    
    	// 需求 : 声明一个方法,该方法可以接收所有类型的值
    	// 多态
    	public static void m1(Object obj) {
    		// 包装类都覆写了equals和toString
    		System.out.println(obj);
    	}
  4. Integer
    1. 基本引用
      1. public static void main(String[] args) {
        		// 获取int型最大值和最小值
        		System.out.println("int最大值 : " + Integer.MAX_VALUE);
        		System.out.println("int最小值 : " + Integer.MIN_VALUE);
        		//获取byte型最大值
        		System.out.println(Byte.MAX_VALUE);
        		//获取long型最大值
        		System.out.println(Long.MAX_VALUE);
        
        		// 创建Integer对象
        		// int类型转换为Integer类型
        		Integer i1 = new Integer(10);
        		// 可以直接把纯数字的字符串转换为Integer类型
        		Integer i2 = new Integer("10");
        		System.out.println(i1);
        		System.out.println(i2);
        		// false
        		System.out.println(i1 == i2);
        		// 覆写了equals true
        		System.out.println(i1.equals(i2));
        	}
    2. 常用方法
      1. public static void main(String[] args) {
        		// 1 对象 int --> Integer
        		Integer i1 = new Integer(10);
        		// 2 Integer --> int
        		int i2 = i1.intValue();
        		System.out.println(i2);
        		// 3 static int parseInt(String s); : 把纯数字字符串转换为int类型
        		// String --> int   必须是纯数字字符串,小数点也不行
        		int i3 = Integer.parseInt("123");
        		System.out.println(i3);
        		// 小数允许有一个小数点
        		double d = Double.parseDouble("3.2");
        		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 i4 = Integer.valueOf(10);
        		// String --> Integer
        		Integer i5 = Integer.valueOf("10");
        		System.out.println(i4 == i5);
        	}
    3. 类型转换
      1. 	public static void main(String[] args) {
        		// 1 int --> Integer
        		Integer i1 = Integer.valueOf(11);
        		// 2 Integer --> int
        		int i2 = i1.intValue();
        		// 3 String --> Integer
        		Integer i3 = Integer.valueOf("22");
        		// 4 Integer --> String
        		String s1 = i3.toString();
        		// 5 String --> int
        		int i4 = Integer.parseInt("123");
        		// 6 int --> String  比较特殊
        		String s2 = 2 + "";
        	}
    4. 自动装箱和自动拆箱
      1. JDK1.5开始 新特性
             自动装箱
                  把 基本类型 自动转换为 对应的包装类类型
             自动拆箱
                   把 对应的包装类类型 自动转换为 基本类型
        并且 自动装箱和自动拆箱是在编译阶段完成的
      2. 	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);
        	}
    5. 扩展-整型常量池
      1. 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);
        	}

二、System 

  1. 是什么
    1. System代表系统,系统很多的属性和控制方法都在这个类中,位与java.lang包下
    2. long currentTimeMillis() : 获取当前系统时间的毫秒数 , 从1970-1-1 0:0:0 000开始 到现在的时间毫秒数
    3. 我们这个地区 时间为 1970.1.1 8:00:00 000
    4. void exit(int status) : 退出虚拟机, 参数为0 表示正常退出 非0 表示异常退出,常用于图形界面,实现退出功能
  2. 怎么用
    1. 	public static void main(String[] args) {
      		// 计算时间差
      		long startTime = System.currentTimeMillis();
      		String[] strs = { "a", "b", "c", "d", "e", "f", "a", "b", "c", "d" ,"e", "f" };
      		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) + "毫秒");
      	}

 三、Date

  1.  是什么
    1. 表示特定的瞬间,精确到毫秒

  2.  构造方法
    1. Date():使用无参构造器创建的对象可以获取本地当前时间。

      Date(long date)

    2. // 获取当前系统时间
      		Date d1 = new Date();
      		// 获取时间原点到指定毫秒数的时间
      		d1 = new Date(1000);
      		System.out.println(d1);

       

  3. 时间格式化
    1. Date类的API不易于国际化,大部分被废弃了,java.text.SimpleDateFormat

      类是一个不与语言环境有关的方式来格式化和解析日期的具体类。

      它允许进行格式化:日期à文本、解析:文本à日期

    2. //年 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);

 四、Calendar

  1.  是什么
    1. Calendar是一个抽象基类,主用用于完成日期字段之间相互操作的功能
    2. 日历类
  2.  方法
    1. 获取Calendar实例的方法
    2. 使用Calendar.getInstance()方法
    3. 调用它的子类GregorianCalendar的构造器。
  3. 一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想 要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、 MINUTE、SECOND
    1. public void set(int field,int value)
    2. public void add(int field,int amount)
    3. public final Date getTime()
    4. public final void setTime(Date date)
  4. 注意:
    1. 获取月份时:一月是0,二月是1,以此类推,12月是11
    2. 获取星期时:周日是1,周一是2 , 。。。。周六是7
  5. 	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;
    	}

五、Math

  1.  是什么
    1. Mth 提供科学计算和基本的数字操作,常用方法都是静态的,使用类名直接调用即可
    2. 在java.lang下面,使用不需要导包
  2. 常用方法
    1. 	public static void main(String[] args) {
      		// abs 绝对值
      		System.out.println(Math.abs(-1.2));
      		// ceil : 向上取整
      		System.out.println(Math.ceil(1.0001));
      		// floor : 向下取整
      		System.out.println(Math.floor(2.999999));
      		// max : 比较谁大
      		System.out.println(Math.max(2.3, 2.2));
      		// min : 比较谁小
      		System.out.println(Math.min(2.3, 2.2));
      		// 平方根  开平方
      		System.out.println(Math.sqrt(16));
      		// 立方根  开立方
      		System.out.println(Math.cbrt(8));
      		// 随机数 : 获取一个大于等于0 且 小于1 的数
      		System.out.println(Math.random());
      		// 向下取整( 随机数*(最大-最小 +1) + 最小)
      		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

  1.  是什么
    1. Integer类作为int的包装类,能存储的最大整型值为231-1,Long类也是有限的, 最大为263-1。如果要表示再大的整数,不管是基本数据类型还是他们的包装类 都无能为力,更不用说进行运算了。

    2. java.math包的BigInteger可以表示不可变的任意精度的整数。BigInteger 提供所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。 另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、 位操作以及一些其他操作。

  2. 常用方法
    1. public BigInteger abs():返回此 BigInteger 的绝对值的 BigInteger。

    2. BigInteger add(BigInteger val) :返回其值为 (this + val) 的 BigInteger

    3. BigInteger subtract(BigInteger val) :返回其值为 (this - val) 的 BigInteger

    4. BigInteger multiply(BigInteger val) :返回其值为 (this * val) 的 BigInteger

    5. BigInteger divide(BigInteger val) :返回其值为 (this / val) 的 BigInteger。整数 相除只保留整数部分。

    6. BigInteger remainder(BigInteger val) :返回其值为 (this % val) 的 BigInteger。

    7. BigInteger[] divideAndRemainder(BigInteger val):返回包含 (this / val) 后跟(this %val) 的两个 BigInteger 的数组。

    8. BigInteger pow(int exponent) :返回其值为 (thisexponent) 的 BigInteger。

  3.  使用 

    1. 	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 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);
	}

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/338292.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号