小梁同学 の
Java学习旅途
你好! 这是小梁同学使用 博客 所记录的文章笔记,作为一个初学者的从基础到未来的记录,如果你想和我一起在Java学习路程上坚持下去,欢迎你的关注与指正。
新的将来
万丈高楼平地起,未来只能靠自己
从无到有,从零到一,学习路上没有尽头
每日一文,每日一记,跟着软件向前努力
加油!!!!!
详解代码均在以下标题后的链接中
以下所有有关代码,都是个人在上完课后自己重新敲代码之后所做笔记后上传,并非原搬直接上传,谢谢理解
2.数字常用类
1.数据表示
进行数据表示,引用数据类型进行表示(引用数据类型,保存null)
基本数据类型对应得引用数据类型(包装类)书写
基本数据类型 | 引用数据类型 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
char | Character |
2. 类的介绍
1.以Integer为例,进行类的介绍
//创建对象的方式不同,存储的位置不同
//New 创建的对象,存储再堆中
Integer a = new Integer(1);
System.out.println(a);
//直接写值,运行时常量池
Integer b = 1;
System.out.println(b);
//进行比较: == 比较的是地址 equals 方法比较的是内容
System.out.println(a==b);
====================
1
1
false
//运行时常量池,所有整数的常量池的范围有一个范围,一个字节范围:-128到127
//两个等号直接赋予数字(不是new)保存,如果超出了范围,堆中创建对象,所以地址不同
Integer b = 1000;
Integer c = 1000;
System.out.println(b==c);
System.out.println(b.equals(c));
====================
false
true
2.Boolean 进行常量的存储
整型的指令进行入栈保存
Boolean w1 = true;
Boolean w2 = true;
Boolean w3 = new Boolean(true);
System.out.println(w1==w2);
System.out.println(w1==true);
System.out.println(w1==w3);
====================
true
true
false
3.装箱和拆箱
Integer i = 1;int r = i; 基本和引用可以进行相互转换,但基本数据类型不能接收null
1.基本数据类型自动的转成引用数据类型,具有了功能,调用方法,完成方法逻辑==》自动装箱
基本数据类型 被包装后成了引用数据类型==》基本数据类型的包装类
int a=10;
Integer b=a;
2.包装类转基本数据类型
自动拆箱**(没有功能的情况下)**
基本数据类型和包装类之间的自动的拆箱和装箱
手动拆箱**(当包装类包含了方法时)**,**intValue()**
引用类型转成基本类型===》手动调用了方法,才能拿到基本数据类型值
//Integer中重写equals方法
public boolean equals(Object obj) {
if (obj instanceof Integer) {
//value 自动拆箱拿到值和后面的数据值进行比较
return value == ((Integer)obj).intValue();
}
return false;
}
//手动拆箱去比较int类型数字的值
Integer r1 = 300;
Integer r2 = 300;
System.out.println(r1.intValue()==r2.intValue());
====================
true
4.静态方法
1.指定类型转换数字字符串
//字符串转数字,结果类型是int
System.out.println(Integer.parseInt("123"));
//字符串转数字,结果类型是Integer
System.out.println(Integer.valueOf("1234"));
2.Math类
包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数
//pi值
System.out.println(Math.PI);
//一个数的几次方==========》次方运算
System.out.println(Math.pow(10, 3));
//平方根
System.out.println(Math.sqrt(9));
//向下取整 比这个数小离这数字最近的整数
System.out.println(Math.floor(9.9));
//向上取整 比这个数大离这数字最近的整数
System.out.println(Math.ceil(9.1));
//四舍五入
System.out.println(Math.round(4.4));
//随机数
System.out.println(Math.random());
===========================
3.141592653589793
1000.0
3.0
9.0
10.0
4
0.14140133672761435
3.float和double
1.数字不精确运算
System.out.println(0.01+0.05);
System.out.println(1.0-0.42);
System.out.println(3.14*10);
System.out.println(1.0/3);
=========================
0.060000000000000005
0.5800000000000001
31.400000000000002
0.3333333333333333
2.精确运算
BigDecimal:一定要用字符串格式的构造方法
BigDecimal bd1 = new BigDecimal("3.14");
BigDecimal bd2 = new BigDecimal("0.05");
BigDecimal bd3 = new BigDecimal("1.0");
BigDecimal bd4 = new BigDecimal("10");
BigDecimal bd5 = new BigDecimal("3");
//加法 3.14+0.05=3.19
System.out.println(bd1.add(bd2));
//减法 1.0-0.05=0.95
System.out.println(bd3.subtract(bd2));
//乘法 3.14*10=31.4
System.out.println(bd1.multiply(bd4));
//除法 根据要保存小数的精确度进行小数保存方式的指定 1.0/3=0.3333333...
System.out.println(bd3.divide(bd5, MathContext.DECIMAL32));
System.out.println(bd3.divide(bd5, MathContext.DECIMAL64));
System.out.println(bd3.divide(bd5, MathContext.DECIMAL128));
================================
3.19
0.95
31.40
0.3333333
0.3333333333333333
0.3333333333333333333333333333333333
//当BigDecimal做除法运算未指定精度,会产生异常
//ArithmeticException算数异常
BigDecimal bd3 = new BigDecimal("1.0");
BigDecimal bd5 = new BigDecimal("3");
System.out.println(bd3.divide(bd5));
=================================
Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
at java.math.BigDecimal.divide(BigDecimal.java:1690)
at com.liang.Test2.main(Test2.java:19)
4.DecimalFormat数据格式化
DecimalFormat df = new DecimalFormat("####,###0.00");
String s0 = df.format(758957847650.3);
System.out.println(s0);
=====================
758957847650.30
注:
1.小数位用“0”进行占位(填充),若小数位无数字,则用“0”进行填充
2.小数位进行四舍五入的逻辑
3.如果整数部分是“0”,为保证整数部分存在,小数点前一位用“0”占位
4.“####,###0”整数位,4位一组,利于读取
5.小数部分使用“#”,有小数部分可以指定,没有小数部分不能指定
6.小数部分,一般用“0”占位;整数部分,最后一位用“0”占位
3.日期常用类
1.Date
可以获取当前系统的时间
Date date = new Date();
System.out.println(date);
==================
Sat Jul 23 00:17:19 CST 2022
2.SimpleDateFormat类
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String s = sdf.format(date);
System.out.println(s);
//用SimpleDateFormat类按照指定的格式显示===》格式化
//年: year y ==>yy 两位年 yyyy 四位年
//月: month M 月份
//日: Day date d 一个月的第几天 D:一年中的第几天
//小时:12小时机制时间==>h 24小时时间==>H
//分钟:minute
//秒: second s S:毫秒
3.Calendar类(抽象类)
//获取的当前系统的时间
Calendar c = Calendar.getInstance();
System.out.println(c);
==============================
//每个时间的字段进行单独的存储
java.util.GregorianCalendar[time=1658817840970,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=6,WEEK_OF_YEAR=31,WEEK_OF_MONTH=5,DAY_OF_MONTH=26,DAY_OF_YEAR=207,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=2,HOUR_OF_DAY=14,MINUTE=44,SECOND=0,MILLISECOND=970,ZONE_OFFSET=28800000,DST_OFFSET=0]
Calendar c = Calendar.getInstance();
//Calendar替代Date 获取某个字段上值的方法 get()
System.out.println(c.get(Calendar.YEAR));
======================
2022
//10 月是 9 获取的一个范围:(0-11)
System.out.println(c.get(Calendar.MONTH));
======================
6
System.out.println(c.get(Calendar.DAY_OF_YEAR));
======================
207
System.out.println(c.get(Calendar.DAY_OF_MONTH));
======================
26
System.out.println(c.get(Calendar.HOUR));
======================
2
System.out.println(c.get(Calendar.HOUR_OF_DAY));
======================
14
System.out.println(c.get(Calendar.MINUTE));
======================
34
System.out.println(c.get(Calendar.SECOND));
======================
16
System.out.println(c.get(Calendar.MILLISECOND));
======================
902
//时间间隔运算
Calendar c = Calendar.getInstance();
System.out.println(c);
c.add(Calendar.YEAR,1);
c.add(Calendar.MONTH,8);
c.add(Calendar.DAY_OF_MONTH,25);
System.out.println(c);
=======================
java.util.GregorianCalendar[time=1658817840970,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=6,WEEK_OF_YEAR=31,WEEK_OF_MONTH=5,DAY_OF_MONTH=26,DAY_OF_YEAR=207,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=2,HOUR_OF_DAY=14,MINUTE=44,SECOND=0,MILLISECOND=970,ZONE_OFFSET=28800000,DST_OFFSET=0]
java.util.GregorianCalendar[time=1713595440970,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2024,MONTH=3,WEEK_OF_YEAR=16,WEEK_OF_MONTH=3,DAY_OF_MONTH=20,DAY_OF_YEAR=111,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=2,HOUR_OF_DAY=14,MINUTE=44,SECOND=0,MILLISECOND=970,ZONE_OFFSET=28800000,DST_OFFSET=0]
//替代Data中的构造方法
Calendar c=Calendar.getInstance();
//清空某一字段值
c.clear(Calendar.MONTH);
System.out.println(c);
//清空字段上所有值
c.clear();
System.out.println(c);
//书写展示的值
c.set(Calendar.YEAR,2025);
c.set(Calendar.MONTH,15);
System.out.println(c);
================================
java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=false,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=?,WEEK_OF_YEAR=31,WEEK_OF_MONTH=5,DAY_OF_MONTH=26,DAY_OF_YEAR=207,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=2,HOUR_OF_DAY=14,MINUTE=57,SECOND=15,MILLISECOND=466,ZONE_OFFSET=28800000,DST_OFFSET=0]
java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=false,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=?,YEAR=?,MONTH=?,WEEK_OF_YEAR=?,WEEK_OF_MONTH=?,DAY_OF_MONTH=?,DAY_OF_YEAR=?,DAY_OF_WEEK=?,DAY_OF_WEEK_IN_MONTH=?,AM_PM=?,HOUR=?,HOUR_OF_DAY=?,MINUTE=?,SECOND=?,MILLISECOND=?,ZONE_OFFSET=?,DST_OFFSET=?]
java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=false,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=?,YEAR=2025,MONTH=15,WEEK_OF_YEAR=?,WEEK_OF_MONTH=?,DAY_OF_MONTH=?,DAY_OF_YEAR=?,DAY_OF_WEEK=?,DAY_OF_WEEK_IN_MONTH=?,AM_PM=?,HOUR=?,HOUR_OF_DAY=?,MINUTE=?,SECOND=?,MILLISECOND=?,ZONE_OFFSET=?,DST_OFFSET=?]
java入门基础—1.7----上一章节: 跳转
java进阶基础—2.1----下一章节: 跳转