javase day14

在这里插入图片描述
void----无返回值
Void—返回值一定是null

在这里插入图片描述
包装类对象的哈希码值都是固定的(null 0)

由基本类型数据构建的包装类对象—封箱
基本类型数据直接赋值给包装类对象—自动封箱—jdk1.5新特性
底层依赖包装类.valueOf()生成包装类对象
包装类对象直接赋值给基本类型数据—自动拆箱—jdk1.5特性、
底层依赖包装类对象.xxxValue()生成基本类型数据
注意:Double d=2;//不可以
Double.valueOf(2);//可以

Math
最终类 提供了基本的数学运算 提供了大量的静态方法
BigDecimal----用于精确运算的类(参数必须是字符串)
BigInteger----用于超大数
DecimalFormat----用于格式化(使用占位符)
Date类
用SimpleDateFonater去操作日期和字符串之间的转换(字符串转日期parse() 日期转字符串format())
calendar—日历类

public class IntegerDemo1 {
	public static void main(String[] args) {
		int i=5;
		//创建Integer
		//包装类对象由基本类型数据构建而来---封箱
		//Integer in=new Integer(i);
		//基本数据类型数据直接赋值给包装类对象---自动封箱---jdk1.5新特性
		//底层是由包装类点valueOf()把基本类型数据转成包装类对象
		//Integer.valueOf(i)
		Integer in=i;
		System.out.println(in);
		//封箱
		System.out.println(new Character('a'));
	}
}

public class IntegerDemo2 {
	public static void main(String[] args) {
		Integer in=new Integer(232);
		//包装类对象直接赋值给基本类型数据---自动拆箱--jdk1.5特性
		//底层依赖包装类对象调用xxxValue()生成基本数据类型
		//in.intvalue()
		int y=in.intValue();
		int i=in;
		System.out.println(i);
		System.out.println(y);
	}
}

public class IntegerDemo3 {
	public static void main(String[] args) {
		//
		//-128--127一个共享范围,超过这个范围每次就返回一个新对象
		Integer.valueOf(12);
		Integer in1=150;
		Integer in2=150;
		//范围-128---127
		Byte.valueOf((byte)12);
		//范围-128---127
		Short.valueOf((short)12);
		//范围  0-127
		Character.valueOf((char)12);
		//范围-128---127
		Long.valueOf(23L);
		//没有共享范围
		Float.valueOf(2.3F);
		System.out.println(in1==in2);
	}
}

public class IntegerDemo4 {
	public static void main(String[] args) {
		/*
		 * Integer in=new Integer(12); int i=12; //包装类对象和基本类型进行操作时会进行自动拆箱
		 * System.out.println(in+i);
		 */
		//创建包装类对象
		//NumberFormatException----数字格式异常
		//会检测字符串中开头是否有+或者-,后面的内容不能出现非整数字符
		Integer in=new Integer("234");
		System.out.println(in);
		//出现了只有true的字样可以忽略大小写,返回的才是true
		Boolean b=new Boolean("True");
		System.out.println(b);
		//类名.parseInt()----把其它类型数据转成包装类对象
		System.out.println(Integer.parseInt("12"));
		//没有提供character的相关方法
		
	}
}

public class IntegerDemo5 {
	public static void main(String[] args) {
		//哈希码值就是输入的整形值
		System.out.println(new Integer(12).hashCode());
		//哈希码值就是输入的整形值
		System.out.println(new Byte((byte)12).hashCode());
		//哈希码值就是输入的整形值
		System.out.println(new Short((short)12).hashCode());
		//哈希码值就是输入的整形值
		System.out.println(new Character((char)12).hashCode());
		//哈希码值就是输入的整形值
		System.out.println(new Long(232333L).hashCode());
		//
		System.out.println(new Double(2.30).hashCode());
		//
		System.out.println(new Float(2.3F).hashCode());
		
		
	}
}

Math下的方法

public class MathDemo1 {
	public static void main(String[] args) {
		//绝对值
		System.out.println(Math.abs(-2.4));
		//求第一个参数的第二个参数次幂(次幂可以是小数,求根)
		System.out.println(Math.pow(4, 0.5));
		//向上取整
		System.out.println(Math.ceil(2.01));
		//向下取整
		System.out.println(Math.floor(2.51));
		//四舍五入   结果是整数
		System.out.println(Math.round(3.16));
		//伪随机小数,大于等于0.0小于1.0
		System.out.println(Math.random());
		//30到50之家的随机的随机整数  随机范围20
		System.out.println((int)(Math.random()*20+30));
	}
}

案例:验证码

package cn.tedu.math;
/**
*@author 作者:
*@version 创建时间:2020年10月5日下午10:10:37
*@description 描述:验证码底层原理
*/
public class YzmDemo {
	public static void main(String[] args) {
		char[]cs= {'a','g','由','k','o','t','p','l'};
		String str="";
		for (int i = 0; i < 6; i++) {
			str+=cs[(int)((Math.random()*8))];
		}
		System.out.println(str);
		
		
	}
}

BigDecimal

public class BigDecimalDemo {
	//strictfp只能加到方法上
	//在底层进行运算时可以把处理的位数提高到80位,最后存储还是64位,所以依然不是精确运算
	public strictfp static void main(String[] args) {
		//因为大部分小数的补码是无线位数,但是存储的位数是固定的
		//就不能精确运算
		double d=2.1-1.98;//行不通
		//参数时字符串才能做精确运算
		BigDecimal bd1=new BigDecimal("2.1");
		BigDecimal bd2=new BigDecimal("1.98");
		System.out.println(bd1.subtract(bd2));
		
	}
}

超大数之间的运算

public class BigIntegerDemo {
	public static void main(String[] args) {
		//超大数之间的运算
		BigInteger bi1=new BigInteger("1234156789");
		BigInteger bi2=new BigInteger("987456123");
		System.out.println(bi1.multiply(bi2));
	}
}

public class DecimalFormaemo {
	public static void main(String[] args) {
		//保留小数位
		Double d=2.329;
		//DecimalFormat----进行格式化
		//占位符   0时占位符,如果这个位上有值就把值展示出来,没值就展示0
		//#是占位符,如果这个位上有值就把值展示出来,没值就不展示
		DecimalFormat df=new DecimalFormat("0.0000");
		DecimalFormat df2=new DecimalFormat("#.####");
		String s=df.format(d);
		System.out.println(s);
		String s2=df2.format(d);
		System.out.println(s2);
	}
}

date类

public class DateDemo1 {
	public static void main(String[] args) {
		//CST------中国标准时区----上海时间
		//得到的是当前的日期和时间
		//默认指定具体的时间时会加上1990年1月
		//警告压制
		//方法名上有黑线----过时了---在未来的版本中不支持

		Date date1=new Date();
		@SuppressWarnings("deprecation")
		Date date=new Date(2020-1900,11-1,1);
		System.out.println(date1);
		
	}
}

public class DateDemo2 {
	public static void main(String[] args) throws ParseException {
		//1、字符串转日期
		String str="2020-12-12 15:12:12";//1911/1/1 1911年
		//ParseException
		//指定日期转换的格式
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		//把字符串转成日期
		Date date=sdf.parse(str);
		System.out.println(date);
		//2、日期转字符串
		//指定格式
		//SimpleDateFormat sdf1=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
		SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		//把日期转换成字符串
		String s=sdf1.format(date);
		System.out.println(s);
		
	}
}

public class CalendarDemo {
	public static void main(String[] args) {
		//获取日历类对象
		Calendar c=Calendar.getInstance();
		System.out.println(c);
		//指定日期
		@SuppressWarnings("deprecation")
		Date date=new Date(2020-1900,12-1,12);
		//给日历设定时间
		c.setTime(date);
		//得到日历类里的信息
		System.out.println(c.get(Calendar.DAY_OF_MONTH));
		
		
	}
}

扩展:localdate

public class LocalDateDemo {
	public static void main(String[] args) {
		//jdk1.8time 包下更新  只展示日期
		LocalDate f=LocalDate.now();
		//
		System.out.println(f);
		//加日期
		System.out.println(f.plus(1,ChronoUnit.CENTURIES));
	}
}

案例:利用编程实现两数乘积的过程
在这里插入图片描述

public class MulTest {
	public static void main(String[] args) {
		int[] arr1= {3,2,1};//123
		int[] arr2= {6,5,4};//456
		//结果数组
		int[] result=new int[6];
		//进行相乘
		for (int i = 0; i < arr1.length; i++) {
			for (int j = 0; j < arr2.length; j++) {
				result[i+j]+=arr1[i]*arr2[j];
			}
		}
		//遍历结果进行进位
		for (int i = 0; i < result.length-1; i++) {
			if(result[i]/10>=0) {
				int tmp=result[i]%10;
				result[i+1]+=result[i]/10;
				result[i]=tmp;
			}
		}
		int sum=0;
		for (int i = 0; i < result.length; i++) {
			
			sum+=result[i]*Math.pow(10, i);
		}
		System.out.println(sum);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值