目录
1.API
1.1定义:
2.Object类
2.1 toString() 方法
2.2 equals() 方法
3. Arrays 类
3.1 equals() 方法
3.2 sort() 方法
3.2.1排序
3.2.2 自定义对象排序
3.3 binarySearch() 方法
3.4 copyOf() 方法
3.5 fill() 方法
3.6 toString() 方法
4.基本数据类型包装类
4.1定义:
4.2 包装类的两种主要用途
4.3方法
5. String类
5.1定义
5.2 字符串类型创建对象的方式:
5.3 判断功能
5.4 获取功能
5.5转换功能
1.将char数组转换为字符串对象的方法:
2.把字符串转换为char数组的方法:
3.转码解码
5.5 其他功能
一.将不同类型的数据转换为字符串类型的两种方法
二.大小写转换
三.字符串连接
四.去除字符串空格
五.字符串拆分
六.字符串替换
6.StringBuffer StringBuilder类
6.1 定义
6.2 注意
6.3 功能及源码
7. 正则表达式
7.1定义
7.2使用规范及代码
8.Random类
8.1定义
8.2使用规范及代码
9.Date类
9.1 定义
9.2使用方法及源码
10.Calendar 类
10.1定义:
10.2使用方法及源码
11.SimpleDateFormat 类
11.1定义
11.2方法及源码
11.3格式化表达:
12. BigInteger 类
12.1 定义
12.2使用方法及源码
13.BigDecimal 类
13.1定义
13.2使用方法及源码
1.API
1.1定义:
API(applicant programming interface)应用程序编程接口
一般在开发中,api表示java语言中为我们提供的各种类和接口(基础功能)
java官方为开发人员提供了一个文档 ,对语言中提供的接口和类进行说明,我们称为API文档
2.Object类
2.1 toString() 方法
2.1.1定义:
在开发中,经常用到输出一个对象,但是对象在内存中储存,是不能直接输出到控制台的,一旦要输出某个对象,那么会默认自动调用类中toString()方法,把对象中的信息,以字符的形式输出
举例:
如果类中没有定义toString()方法,那么就会在父类里面调用
Object类中的toString()默认输出的是对象在内存中的地址(Object类是所有类的父类)
package Objectdemo.toStringdemo;public class Person {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}//Object中的toString()方法输出的是对象的地址,与我们想要的结果不一样,那么我们就重写toString方法@Overridepublic String toString() {return "Person{" + "name='" + name + '\'' + ", age=" + age + '}';}
}
Object中的toString() 输出的是对象的地址,与我们想要的结果不一样,那么我们就重写toString()
package Objectdemo.toStringdemo;public class ToStringDemo {public static void main(String[] args) {Person person = new Person();person.setAge(20);person.setName("Tom");System.out.println(person);}
}
2.2 equals() 方法
2.2.1 定义:
Object类中 默认的equals(Object obj) 比较两个对象的地址是否相等 , 与 == 效果相等
为了区分,开发人员把equals进行重写, 从而比较 内容 是否相同
如果两个相等,则返回值为true,否则返回值为false (Boolean类型)
2.2.2 举例:
package Objectdemo.Equalsdemo;
public class Person {String name;int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}//重写equals方法,用来比较内容是否相等@Overridepublic boolean equals(Object obj) {//Person是自己定义的类,需要重写equals方法if (obj instanceof Person){Person p = (Person)obj;//判断,如果类型相同,就向下转型return this.age == p.age && this.name.equals(p.name);//(name)String类型中的equals已经被重写了,比较的是内容是否相同}return false;}
}
自己定义的类,需要重写equals方法,系统中定义的类,一般情况下已经重写过equals()方法了
package Objectdemo.Equalsdemo;public class Demo1 {public static void main(String[] args) {Person p1 = new Person();p1.setName("jim");p1.setAge(20);Person p2 = new Person();p2.setAge(20);p2.setName("jim");//比较p1和p2是否相等//1.比较地址是否相同System.out.println(p1==p2);//==左右,当两边是引用数据类型时,比较的是 地址 是否相等//2.比较内容是否相同System.out.println(p1.equals(p2));//默认调用equals(),也是比较对象地址是否相等;重写后,比较的是内容是否相同}
}
3. Arrays 类
3.1 equals() 方法
3.1.1 定义:
比较两个数组对象中元素是否相等.
举例:
package Arraysdemo.equalsdemo;import java.util.Arrays;public class Demo1 {public static void main(String[] args) {int[] a={1,2,3,4,5};int[] b={1,2,3,4,5,6};System.out.println(a==b);//比较地址System.out.println(Arrays.equals(a,b));//比较内容(Arrays类中的equals()已被重写)}
}
3.2 sort() 方法
3.2.1排序
举例:
package Arraysdemo.Sortdemo;import java.util.Arrays;public class SortDemo1 {public static void main(String[] args) {int a[]={3,2,1,5,4};Arrays.sort(a);////对数组内容进行排序Arrays.sort(a,0,3);//对数组指定的 区间 进行排序(数组,包含开始的位置,不包含结束的位置)System.out.println(Arrays.toString(a));}
}
3.2.2 自定义对象排序
需要为自定义的对象提供一个排序规则,即指定用哪个属性(学号,字母...)进行排序
compareTo()会在Arrays类中的sort()排序时会自动调用,根据返回的结果判断两个值谁大谁小;
举例:
package Arraysdemo.Sortdemo;public class Student implements Comparable<Student> {private int no;private String name;public Student(String name, int no) {this.name = name;this.no = no;}@Overridepublic String toString() {return "Student{" +"no=" + no +", name='" + name + '\'' +'}';}@Override //实现接口 要重写抽象方法public int compareTo(Student o) {//用学号排序return this.no-o.no;//返回结果 小于0 等于0 大于0//用name排序//return this.name.compareTo(o.name);}
}
package Arraysdemo.Sortdemo;
import java.util.Arrays;//自定义对象排序
public class SortDemo2 {public static void main(String[] args) {//构造方法赋值Student student1 = new Student("b", 101);Student student2 = new Student("a", 102);Student student3 = new Student("c", 103);Student student4 = new Student("d", 104);Student student5 = new Student("e", 105);//开辟有5个空间的学生数组Student[] students = new Student[5];//将学生随机装入数组中students[0] = student3;students[1] = student2;students[2] = student5;students[3] = student1;students[4] = student4;//对学生数组进行排序Arrays.sort(students);System.out.println(Arrays.toString(students));}
}
3.3 binarySearch() 方法
3.3.1 定义:
二分查找算法(折半查找算法)
(1)前提:数组要是有序的
(2)方法:每次找到数组的中间值,用我们将要找的值与中间值进行比较。
如果我们要找的值大于中间值,就继续向右边查找 .然后再与右边的中间值进行比较,以此类推,如果小于中间值就向左查找
(3)举例:
int[] a = {1,2,3,4,5,6,7,8,9......,10000};
判断数组中是否包含 5535 这个元素
常用做法是从第一个开始查找,效率低,时间长;但是如果使用
二分查找(适合有序的大基数查找)直接从5000开始比较,加快了查找速率
package Arraysdemo.BinarySearchdemo;import java.util.Arrays;public class BinarySearchDemo1 {public static void main(String[] args) {int [] a= {9,5,8,7,2,6,4,3,1};Arrays.sort(a);//1.先排序成{1,2,3,4,5,6,7,8,9}//2.(要查找的数组,要寻找的元素) 如果返回负数,说明要寻找的值不存在System.out.println(Arrays.binarySearch(a, 9));//3.查找区间中的元素(要查找的数组,开始位置,结束位置,查找的元素)System.out.println(Arrays.binarySearch(a,0,5,3));}
}
3.4 copyOf() 方法
3.4.1定义:
数组复制,将原数组中的内容,复制到一个新创建的指定长度的数组
举例:
package Arraysdemo.Copyofdemo;import java.util.Arrays;public class CopyOfDemo {public static void main(String[] args) {int[] a = {1,2,3,4,5};//int[] b = new int[8];//[1,2,3,4,5,0,0,0]int[] b = Arrays.copyOf(a,8);//(原数组,新数组的长度)System.out.println(Arrays.toString(b));}
}
3.5 fill() 方法
3.5.1定义: 数组填充
举例:
package Arraysdemo.Filldemo;
import java.util.Arrays;
public class FillDemo {public static void main(String[] args) {int[] a = {1,2,3,4,5};//(要填充的数组,要填充的元素)Arrays.fill(a,1);//将a数组中的元素全填充为1System.out.println(Arrays.toString(a));}
}
3.6 toString() 方法
3.6.1定义:
返回指定数组内容的字符串的表示形式
4.基本数据类型包装类
4.1定义:
由于java是面向对象的,但是8中基本类型的数据类型不是面向对象的,使用起来不方便,所以 java语言中,为8种基本数据类型,各提供一个包装类进行表示, 包装类中可以包含一个基本 类型值以及一些常用的操作方法(例如: 寻找整数的最大值, 将整数转为二进制)
4.2 包装类的两种主要用途
● 包含每种基本数据类型的相关属性(最大/小值)以及相关的操作方法
● 作为 与基本数据类型 对应的 类型存在
4.3方法
(1)基本方法和常用静态方法
package basetypedemo;public class IntegerDemo1 {public static void main(String[] args) {//int类型的包装类:Integer//基本方法System.out.println(Integer.MAX_VALUE);//最大值System.out.println(Integer.MIN_VALUE);//最小值System.out.println(Integer.BYTES);//4 含有的字节数System.out.println(Integer.SIZE);//32 含有的比特位//常用静态方法System.out.println(Integer.max(10,5));//返回较大的值System.out.println(Integer.min(10,5));//返回较小的值System.out.println(Integer.toBinaryString(8));//2进制System.out.println(Integer.toHexString(28));//16进制System.out.println(Integer.toOctalString(9));//8进制System.out.println(Integer.compare(11, 10));//两个数比大小--->返回 -1 0 1String a ="10";String b = "20";//例如 : String a ="10c"; 无法转换为整数,会报错int ai = Integer.parseInt(a);int bi = Integer.parseInt(b);System.out.println(ai+bi);//把字符串类型的数值,转为基本类型数值,转换时不能出现非数字的字符//同理可以调用其他基本类型的包装类,就省略了}
}
(2)构造方法和实例方法
package basetypedemo;public class IntegerDemo2 {public static void main(String[] args) {//构造方法Integer i1 = new Integer(20);Integer i2 = new Integer("20");//会调用parseInt(),将Stirng转为int类型的//实例方法System.out.println(i1.equals(i2));//equals(),比较Integer对象中的内容是否相等System.out.println(i1.compareTo(i2));//compareTo(),比较Integer对象中的数据大小String s = i1.toString();//toString(),将整数类型转为String类型int a = i1.intValue();//intValue(),把包装类型转为基本类型}
}
5. String类
5.1定义
java.lang.String 被final修饰,不能被继承
String是java中的字符串(用" "表示),String类中有一个char数组,用来存储字符串内容,
字符串对象一旦创建后,值就不能改变,改变值就是重新创建一个新的字符串对象
举例:
package Stringdemo.Demo;public class Demo1 {public static void main(String[] args) {String s1 = new String("abc");s1 += "def";s1 += "ghi";s1 += "jkl";System.out.println(s1);}}
5.2 字符串类型创建对象的方式:
1.赋值方式
String s = "abc"; 类似于装箱,隐式的创建了一个字符串对象
2.new方式
String s = new String("abc");
package Stringdemo.Demo;public class Demo2 {public static void main(String[] args) {String s1 = "abc";String s2 = "abc";String s3 = new String("abc");String s4 = new String("abc");System.out.println(s1 == s2);//true/* s1和s2指向的是同一个地址,系统认为s1已经创建过一个"abc"对象,放在字符串常量池当中,当s2的值为"abc"时,常量池里如果有,就把s1的地址赋给s2*/System.out.println(s3 == s4);//falseSystem.out.println(s1.equals(s2));System.out.println(s3.equals(s4));}
}
注意:字符串常量池
5.3 判断功能
1. equals()方法 : 判断内容是否一致
equalsIgnoreCase() 方法: 判断内容是否一致,且忽略大小写
2.contains()方法 : 判断是否包含某个内容
3. isEmpty()方法 : 判断是否为空, 空返回true 否则返回false
4.startWith()方法 : 判断是否为指定的子串作为开头
5.endWith()方法 : 判断是否为指定的子串作为结尾
package Stringdemo.Demo;public class Demo3 {public static void main(String[] args) {String s1 = "abcd";String s2 = "abCd";System.out.println(s1.equals(s2));//看内容是否一致System.out.println(s1.equalsIgnoreCase(s2));//看内容是否一致,且忽略大小写System.out.println(s1.contains("bd"));//false 判断是否包含一个整体 “bd”System.out.println(s1.contains("b"));//true 判断是否包含“b”System.out.println(s1.isEmpty());//判断是否为空 空返回true 否则返回falseSystem.out.println(s1.startsWith("ab"));//判断是否为指定的子串作为开头System.out.println(s1.endsWith("d"));//判断是否为指定的子串作为结尾}
}
5.4 获取功能
1. length() 方法 : 获取字符串的长度
2. charAt() 方法 : 获取指定位置上的字符
3. indexOf() 方法: 获取指定字符出现的位置,从前往后找
lastindexOf()方法 : 获取指定字符出现的位置,从后往前找
4. substring() 方法 : 截取字符,从...开始
substring( , )方法 : 截取字符,从...开始,到...结束
package Stringdemo.Demo;public class Demo4 {public static void main(String[] args) {String s1 = "abcdefg";//['a','b','c','d','e','f','g']System.out.println(s1.length());//获取字符串的长度System.out.println(s1.charAt(2));//获取指定位置上的字符System.out.println(s1.indexOf("c"));//获取指定字符出现的位置,从前往后找System.out.println(s1.indexOf("c",3));System.out.println(s1.lastIndexOf("c"));//从后向前找System.out.println(s1.lastIndexOf("c",2));String s2 = s1.substring(2);//截取字符,从第2个位置开始System.out.println(s2);String s3 =s1.substring(3,4);//截取字符,从第3个位置开始,到第4个位置结束System.out.println(s3);}
}
5.5转换功能
1.将char数组转换为字符串对象的方法:
(1).构造方法
(2).valueOf()方法
2.把字符串转换为char数组的方法:
toCharArray()方法
3.转码解码
getBytes()方法
package Stringdemo.Demo;import java.util.Arrays;public class Demo6 {public static void main(String[] args) {//构造方法String s1 = new String();//创建一个字符串对象 this.value = "".value;String s2 = new String("abcd");//创建String类型的char[] chars ={'a','b','c','d'};//将char数组转为字符串对象的方法:String s3 = String.valueOf(chars);//String类的valueOf()方法String s4 = new String(chars);//构造方法String s5 = "abcd";//把字符串转为char数组的方法:char[] chars1 = s5.toCharArray();//toCharArray()方法Arrays.sort(chars);//对数组进行排序String s6 = new String(chars1);//把排好序的char数组转为字符串 (因为字符串没法排序,只有转为数组才可以排序)System.out.println(s6);//转换功能(转码解码)String s7 = "abcd";//数据在传输时,都是以数字进行传递的byte[] bytes= s7.getBytes();//将看的懂的字符转为看不懂的编码System.out.println(Arrays.toString(bytes));//97 98 99 100String s8 = new String(bytes);//再 将看不懂的字节数组转为看的懂的字符串System.out.println(s8);}
}
5.5 其他功能
一.将不同类型的数据转换为字符串类型的两种方法
1.toString()
用的比较少,如果a的值是整数,就不报错。但是a的值是null,会报错
2.valueOf() ----装箱
用的比较多 即使值为null,转换时也不会报错
二.大小写转换
1.toLowerCase()
转小写
2.toUpperCase()
转大写
三.字符串连接
concat() : 必须传String类型
四.去除字符串空格
1.trim()
去掉字符串前后的空格 不能去掉中间空格
2.replace()
使用replace(),将中间空格替换
五.字符串拆分
split() 用指定的分隔符,将一个字符串拆分成数组,不会去除中间的空格
六.字符串替换
replace(原来的字符,替换后的字符)
package Stringdemo.Demo;import java.util.Arrays;public class Demo5 {public static void main(String[] args) {//一.将不同类型的数据转换为字符串类型的两种方法Integer a = null;/*1.toString()方法用的比较少,如果a的值是整数,就不报错。但是a的值是null,会报错。*///String s1 = a.toString();//会报错/*2.valueOf()方法----装箱用的比较多 即使值为null,转换时也不会报错*/String s = String.valueOf(a);System.out.println(s);//二.大小写转换String s3 = "abCD";System.out.println(s3.toLowerCase());// abcd 转小写System.out.println(s3.toUpperCase());// ABCD 转大写//三.字符串连接String s4 = s3.concat("efg");//concat()中必须传String类型System.out.println(s4);//abCDefg 连接字符串//四.去除字符串空格//(1)去除前后空格String s5 = s3.trim();//去掉字符串前后的空格 不能去掉中间空格System.out.println(s5.length());//(2)去除中间空格----使用replace(),将中间空格替换//五.字符串拆分 String s6= "ab;cd :efg;hjk";String[] strings = s6.split(";");//用指定的分隔符,将一个字符串拆分成数组,不会去除中间的空格System.out.println(Arrays.toString(strings));//六.字符串替换String s7= "abcecc";String s8 = s7.replace("ce", "CD");//替换字符 (原来的字符,替换后的字符)System.out.println(s8);}
}
6.StringBuffer StringBuilder类
6.1 定义
由于String声明的字符串是不可以改变的,每次拼接(+=)都会创建一个对象,效率低
所以java中提供了两个值可变的字符串对象: StringBuffer 和 StringBuilder
6.2 注意
1.StringBuffer的创建不能通过赋值 即StringBuffer stringBuffer =" ";
只能通过new 即StringBuffer stringBuffer = new StringBuffer();
2.StringBuffer内部存在一个没有被final修饰的数组(默认长度16),可以向数组中存放字符
装满后,会自动扩容 同时不会创建新的StringBuffer对象 效率高
2. StringBuffer : 在多线程场景下是安全的,因为它的方法都加了 锁,一次只允许进一个
StringBuilder : 它的方法上,没有加锁,所以适合单线程场景
6.3 功能及源码
添加---删除---替换---逆序
package Stringdemo.StringBuffer;public class StringBufferDemo {public static void main(String[] args) {StringBuffer stringBuffer1 = new StringBuffer();//无参的构造方法,默认容量是16StringBuffer stringBuffer2 = new StringBuffer("abcd");StringBuffer stringbuffer = new StringBuffer(10);//指定新的容量//String s = new StringBuffer(stringBuffer);//可以将StirngBuffer类型转为String类,故此类中提供的方法较少//常用方法:stringbuffer.append("ss");//不能用 += 方法添加字符stringbuffer.append("bb");//向末尾添加元素stringbuffer.insert(3, "cnm");//向指定位置添加元素stringbuffer.deleteCharAt(1);//删除指定位置上的值stringbuffer.delete(0,5);//删除某个区间stringbuffer.replace(0,2,"cccccc");//把某个区间替换成其他stringbuffer.reverse();//逆序字符串 bmncbssSystem.out.println(stringbuffer);}
}
package Stringdemo.StringBuffer;public class StringBuilderDemo {public static void main(String[] args) {StringBuilder stringBuilder = new StringBuilder();stringBuilder.append("abcd");}}
7. 正则表达式
7.1定义
正则表达式(RegEx)是一种文本格式匹配工具,是计算机语言的一种技术,主流编程语言都支持
使用正则表达式中的元素,制定一个规则,用这个规则与字符串进行匹配 matches(), 匹配成功返回true,否则返回false
7.2使用规范及代码
package Stringdemo.RegEx;public class RedExDemo {public static void main(String[] args) {//使用正则表达式,就可以很轻松的进行字符串的格式匹配 举例:验证手机号是否正确//正常方法 :遍历字符串,验证是否存在非数字字符 && 第一位必须为1 && 第二位为3579 && 其他位是数字String s1 = "154sdhsh_54@xxx.com";System.out.println(s1.matches("[0-9]"));//只能匹配一个数字//注意: "-"表示范围 且要用[]表示System.out.println(s1.matches("[0-9]*"));// * 表示不限数字个数System.out.println(s1.matches("[0-9]{3}"));//只能是三个数字System.out.println(s1.matches("[0-9]{3,}"));//数字的个数可在三个以上System.out.println(s1.matches("[0-9]{3,6}"));//至少三个数字,最多6个System.out.println(s1.matches("\\d{3,6}"));// \\d 相当于[0-9],和上一行表示相同//正则表达式方法:验证11位手机号是否规范System.out.println(s1.matches("[1][3,5,7,8,9][0-9]{9}"));String s = "bc";System.out.println(s.matches("[a-z]"));//只能是 一个 小写字母,不能出现两个字母System.out.println(s.matches("[a-zA-z]"));//表示为任意一个大小写字母System.out.println(s.matches("[A-z]"));//因为a的值是大于A的值,所以不能表达为[a-Z]System.out.println(s.matches("\\w*"));// \\w 表示为[A-z0-9_]String s2 = "ahidc_ajd@qq.com.cn";//邮箱格式 154sdhsh_54 @ xxx . comSystem.out.println(s2.matches("\\w{6,20}@\\w{2,6}\\.(com|com\\.cn)"));/*注意:1."."可以代表任意字母数字或者符号,所以把 . 替换为 \\. ---->让其只是单纯的 . 而不是任意的字符2.使用正则表达式的时候不要轻易添加空格,可能会格式不正确*/}}
8.Random类
8.1定义
Random类用于产生随机数
8.2使用规范及代码
package randomdemo;import java.util.Arrays;
import java.util.Random;public class RandomDemo {public static void main(String[] args) {Random random = new Random();System.out.println(random.nextInt());//在int类型的取值范围内随机返回一个整数System.out.println(random.nextBoolean());System.out.println(random.nextFloat());System.out.println(random.nextDouble());//在double类型的取值范围内随机返回一个数System.out.println(random.nextLong());//在0到指定区间内,随机返回一个数 取值范围:[0,指定数)System.out.println(random.nextInt(10));//在0到10之间随机返回一个数//在数组空间中生成随机数byte[] bytes= new byte[10];//创建一个有10个空间的数组random.nextBytes(bytes);System.out.println(Arrays.toString(bytes));//输出}
}
9.Date类
9.1 定义
java.sql.Date 连接数据库时使用
java.util.Date 一个Date类的对象,表示当前系统运行那一刻的时间
9.2使用方法及源码
package Datedemo;import java.util.Date;public class DateDemo {public static void main(String[] args) {Date date = new Date();System.out.println(date);System.out.println(date.getYear()+1900);//从1900年开始计算System.out.println(date.getMonth()+1);//在英文中1月记忆为0System.out.println(date.getDate());//日System.out.println(date.getDay());//把星期天记为第一周的开始System.out.println(date.getHours());//时System.out.println(date.getMinutes());//分System.out.println(date.getSeconds());//秒//getTime 获得的是从 1970.1.1 0.0.0.秒 到 date对象创建时 所有的毫秒值System.out.println(date.getTime());Date date1 = new Date();System.out.println(date1.getTime()-date.getTime());//获得两次时间的 毫秒差Date date2 = new Date(1739430660659l);//将毫秒差还原成某一时间System.out.println(date2);}
}
10.Calendar 类
10.1定义:
相比起Date类中方法,更加全面
使用时调用 getInstance() 方法
10.2使用方法及源码
举例:
package Calendardemo;import java.util.Calendar;public class CalendarDemo {public static void main(String[] args) {//创建一个日历对象Calendar calendar= Calendar.getInstance();//获得Calender的一个子类对象GregorianCalendar//时间表示System.out.println(calendar.get(Calendar.YEAR));//年System.out.println(calendar.get(Calendar.MONTH)+1);//月System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//日System.out.println(calendar.get(Calendar.HOUR));//时 12小时制System.out.println(calendar.get(Calendar.HOUR_OF_DAY));//时 24小时制System.out.println(calendar.get(Calendar.MINUTE));//分System.out.println(calendar.get(Calendar.SECOND));//秒//第... 中第...System.out.println(calendar.get(Calendar.WEEK_OF_MONTH));//月中的第几周System.out.println(calendar.get(Calendar.DAY_OF_WEEK));//周中的第多少天System.out.println(calendar.get(Calendar.DAY_OF_YEAR));//今年的第多少天//其他表达省略.....//相当于Date类中的getTime()方法 获得的是从 1970.1.1 0.0.0.秒 到 date对象创建时 所有的毫秒值System.out.println(calendar.getTimeInMillis());}
}
11.SimpleDateFormat 类
11.1定义
日期格式化 (java.text)
1.将日期类型转为指定格式的字符串 format()
2.将指定格式的字符串转为日期类型 parse()
11.2方法及源码
举例:
package SimpleDateFormatdemo;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class SimpleDateFormatDemo {public static void main(String[] args) throws ParseException {Date date = new Date();//将日期类型 转为字符串类型 年 月 日 时 分 秒 毫秒 星期SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss S E");String s1= simpleDateFormat.format(date);System.out.println(s1);//将字符串类型转为日期类型String dateStr = "2002-02-02";SimpleDateFormat simpleDateFormat1= new SimpleDateFormat("yyyy-MM-dd");Date date1 = simpleDateFormat1.parse(dateStr);System.out.println(date1);}
}
11.3格式化表达:
12. BigInteger 类
12.1 定义
BigInteger类型是一个数字范围比Integer , Long类型的数字范围大得多的类型,它支持任意精度的整数,即 在运算中 BigInteger 类型可以准确地表示任何大小的整数值而不会丢失任何息。
12.2使用方法及源码
package BigIntegerdemo;import java.math.BigInteger;public class BigIntegerDemo {public static void main(String[] args) {System.out.println(Long.MAX_VALUE);BigInteger bigInteger1 = new BigInteger("9999999999999999999999");BigInteger bigInteger2 = new BigInteger("1111111111111111111111");//加法BigInteger bigInteger3 = bigInteger1.add(bigInteger2);System.out.println(bigInteger3);//乘法BigInteger bigInteger4 = bigInteger1.multiply(bigInteger2);System.out.println(bigInteger4);//其他方法省略......}
}
13.BigDecimal 类
13.1定义
问题: 在计算机中,float 和 double 都是浮点数 , 而计算机是二进制的,浮点数会失去一定的精确度 (根本原因是 十进制浮点值没有完全与之相同的二进制形式 , 十进制浮点值的二进制表示形式不精确,只能无限接近于那个值.)
举例 : 在金融项目这种情况很危险,例如涉及金额的计算 , 都必须十分精确,如果你的支付宝账户余额显示 193.99999999999998,那是一种怎么样的体验?
解决方法 : 使用BigDecimal类中的方法进行运算
13.2使用方法及源码
package BigDecimaldemo;import java.math.BigDecimal;public class BigDecimalDemo {public static void main(String[] args) {//System.out.println(0.1+0.2);//0.30000000000000004//浮点数运算BigDecimal bigDecimal1 = new BigDecimal("0.1");BigDecimal bigDecimal2 = new BigDecimal("0.2");BigDecimal bigDecimal3 = bigDecimal1.add(bigDecimal2);System.out.println(bigDecimal3);BigDecimal bigDecimal4 = new BigDecimal("10");BigDecimal bigDecimal5 = new BigDecimal("3");BigDecimal bigDecimal6 = bigDecimal4.divide(bigDecimal5,3,3);//方法.(要操作的变量,保留小数的位数,进位的模式 )System.out.println(bigDecimal6);}
}