一、数据结构
1.基本数据类型
Java的基本数据类型分为以下8种
2.包装类
Java是一个面向对象的编程语言,但是Java中的八种基本数据类型却是不面向对象的,为了使用方便和解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八种基本数据类型对应的类统称为包装类(Wrapper Class),包装类均位于java.lang包。
自动装箱和自动拆箱指的是包装类的数据可以与基本数据类型直接互相转换
package demo; public class Test { public static void main(String[] args) { /* 自动装箱 */ int a = 10; Integer a1 = a; System.out.println(a); System.out.println(a1); /* 自动拆箱 */ Integer b = 20; int b1 = b; System.out.println(b); System.out.println(b1); } }
包装类相较于普通的数据类型,它可以存在一些可以直接使用的方法,方便进行数据处理。
package demo; public class Test { public static void main(String[] args) { /* 包装类可以把基本类型的数据转换成字符串形式 */ Integer a = 23; String s = a.toString(); System.out.println(s + 1); } }
运行结果是直接在“23”后添加“1”,而不是计算出24,说明成功转化为字符串型。
package demo; public class Test { public static void main(String[] args) { /* 包装类也可以将字符串型转换为整数或小数等基本数据类型 */ String number = "23"; int age = Integer.valueOf(number); System.out.println(age + 1); String number1 = "99.9"; double score = Double.valueOf(number1); System.out.println(score + 0.5); } }
二、常用API
1.Date类
package demo; import java.util.Date; public class Test { public static void main(String[] args) { // 1、创建一个Date类的对象:代表系统此刻日期时间对象 Date d = new Date(); System.out.println(d); // 2、获取时间毫秒值 long time = d.getTime(); System.out.println(time); System.out.println("----------------------------"); // 1、得到当前时间 Date d1 = new Date(); System.out.println(d1); // 2、当前时间往后走 1小时 121s long time2 = System.currentTimeMillis(); time2 += (60 * 60 + 121) * 1000; // 3、把时间毫秒值转换成对应的日期对象。 Date d3 = new Date(); d3.setTime(time2); System.out.println(d3); } }
2.String类
package demo; public class Test { public static void main(String[] args) { String s = "nenu 666"; /* length():返回长度 */ System.out.println(s.length()); /* split(String regex):分割字符串(以regex为分界点分割) */ String[] s1 = s.split(" "); for(String str : s1){ System.out.println(str); } /* 查找,找到返回第一次出现的下标,找不到返回-1 indexOf(char c)、indexOf(String str)从前面开始 lastIndexOf(char c)、lastIndexOf(String str)从后面开始 */ System.out.println(s.indexOf("6")); System.out.println(s.lastIndexOf("6")); System.out.println(s.indexOf("x")); /* equals():判断两个字符串是否相等,注意不能直接用== */ String s2 = "nenu 666"; String s3 = "nenu666"; System.out.println(s.equals(s2)); System.out.println(s.equals(s3)); /* replace(String oldRegex, String newRegex):替换字符串 */ String s4 = s3.replace("nenu","NENU"); System.out.println(s4); /* substring(int beginIndex, int endIndex):返回[beginIndex, endIndex)中的子串 */ String s5 = s.substring(0,4); System.out.println(s5); } }
3.Math类
package demo; public class Test { public static void main(String[] args) { /* abs(int a):绝对值 */ int a = -5; System.out.println(Math.abs(a)); /* ceil(double d):向上取整 floor(double d):向下取整 */ double b = 3.14; System.out.println(Math.ceil(b)); System.out.println(Math.floor(b)); /* max(int a,int b):最大值 */ System.out.println(Math.max(50,60)); /* pow(double a,double b):a的b次幂 */ System.out.println(Math.pow(2,10)); /* sqrt(double d):算术平方根 */ System.out.println(Math.sqrt(625)); } }
4.BigDecimal类
package demo; public class Test { public static void main(String[] args) { /* 直接使用double进行运算时,可能会出现精度失真问题 */ double a = 0.1; double b = 0.2; System.out.println(a+b); } }
所以在进行精度运算时,可以选择使用BigDecimal类
package demo; import java.math.BigDecimal; public class Test { public static void main(String[] args) { /* 直接使用double进行运算时,可能会出现精度失真问题 */ double a = 0.1; double b = 0.2; System.out.println(a + b); /* 使用BigDecimal对数据进行封装再进行运算 */ BigDecimal a1 = BigDecimal.valueOf(a); BigDecimal b1 = BigDecimal.valueOf(b); System.out.println(a1.add(b1)); System.out.println(a1.subtract(b1)); System.out.println(a1.multiply(b1)); System.out.println(a1.divide(b1)); } }