欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

JAVA学习笔记-常用API

时间:2023-07-04

先封装

import java.util.Objects;public class Student { //extends Object{ private String name; private char sex; private int age; public Student() { } public Student(String name, char sex, int age) { this.name = name; this.sex = sex; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } /** 定制相等规则。 两个对象的内容一样就认为是相等的 s1.equals(s2) 比较者:s1 == this 被比较者: s2 ==> o */ @Override public boolean equals(Object o) { // 1、判断是否是同一个对象比较,如果是返回true。 if (this == o) return true; // 2、如果o是null返回false 如果o不是学生类型返回false ...Student != ..Pig if (o == null || this.getClass() != o.getClass()) return false; // 3、说明o一定是学生类型而且不为null Student student = (Student) o; return sex == student.sex && age == student.age && Objects.equals(name, student.name); } /** 自己重写equals,自己定制相等规则。 两个对象的内容一样就认为是相等的 s1.equals(s2) 比较者:s1 == this 被比较者: s2 ==> o */ /* @Override public boolean equals(Object o){ // 1、判断o是不是学生类型 if(o instanceof Student){ Student s2 = (Student) o; // 2、判断2个对象的内容是否一样。// if(this.name.equals(s2.name) &&// this.age == s2.age && this.sex == s2.sex){// return true;// }else {// return false;// } return this.name.equals(s2.name) && this.age == s2.age && this.sex == s2.sex ; }else { // 学生只能和学生比较,否则结果一定是false return false; } }*/ @Override public String toString() { return "Student{" + "name='" + name + ''' + ", sex=" + sex + ", age=" + age + '}'; }}

测试

/** 目标:掌握Object类中toString方法的使用。 */public class Test1 { public static void main(String[] args) { Student s = new Student("DJ", '男', 19); // String rs = s.toString(); // System.out.println(rs); // System.out.println(s.toString()); // 直接输出对象变量,默认可以省略toString调用不写的 System.out.println(s); }}


测试2

import java.util.Objects;/** 目标:掌握Object类中equals方法的使用。 */public class Test2 { public static void main(String[] args) { Student s1 = new Student("码云", '男', 19); Student s2 = new Student("码云", '男', 19); // equals默认是比较2个对象的地址是否相同,子类重写后会调用子类重写的来比较内容是否相同。 System.out.println(s1.equals(s2)); System.out.println(s1 == s2); System.out.println(Objects.equals(s1, s2)); }}

import java.util.Objects;/** 目标:掌握objects类的常用方法:equals */public class Test { public static void main(String[] args) { String s1 = null; String s2 = new String("itheima"); // System.out.println(s1.equals(s2)); // 留下了隐患,可能出现空指针异常。 System.out.println(Objects.equals(s1, s2)); // 更安全,结果也是对的! /** Objects: public static boolean equals(Object a, Object b) { return (a == b) || (a != null && a.equals(b)); } */ System.out.println(Objects.isNull(s1)); // true System.out.println(s1 == null); // true System.out.println(Objects.isNull(s2)); // false System.out.println(s2 == null); // false }}

/** 目标:学会使用StringBuilder操作字符串,最终还需要知道它性能好的原因 */public class StringBuilderDemo1 { public static void main(String[] args) { StringBuilder sb = new StringBuilder(); // "" sb.append("a"); sb.append("b"); sb.append("c"); sb.append(1); sb.append(false); sb.append(3.3); sb.append("abc"); System.out.println(sb); StringBuilder sb1 = new StringBuilder(); // 支持链式编程 sb1.append("a").append("b").append("c").append("我爱你中国"); System.out.println(sb1); // 反转 sb1.reverse().append("110"); System.out.println(sb1); System.out.println(sb1.length()); // 注意:StringBuilder只是拼接字符串的手段:效率好。 // 最终的目的还是要恢复成String类型。 StringBuilder sb2 = new StringBuilder(); sb2.append("123").append("456"); // 恢复成String类型 String rs = sb2.toString(); check(rs); } public static void check(String data){ System.out.println(data); }}

public class StringBuilderTest2 { public static void main(String[] args) { int[] arr1 = null; System.out.println(toString(arr1)); int[] arr2 = {10, 88, 99}; System.out.println(toString(arr2)); int[] arr3 = {}; System.out.println(toString(arr3)); } /** 1、定义方法接收任意整型数组,返回数组内容格式 */ public static String toString(int[] arr){ if(arr != null){ // 2、开始拼接内容。 StringBuilder sb = new StringBuilder("["); for (int i = 0; i < arr.length; i++) { sb.append(arr[i] ).append(i == arr.length - 1 ? "" : ", "); } sb.append("]"); return sb.toString(); }else { return null; } }}

/** 目标:Math类的使用。 Math用于做数学运算。 Math类中的方法全部是静态方法,直接用类名调用即可。 方法: 方法名 说明 public static int abs(int a) 获取参数a的绝对值: public static double ceil(double a) 向上取整 public static double floor(double a) 向下取整 public static double pow(double a, double b) 获取a的b次幂 public static long round(double a) 四舍五入取整 小结: 记住。 */public class MathDemo { public static void main(String[] args) { // 1.取绝对值:返回正数 System.out.println(Math.abs(10)); // 10 System.out.println(Math.abs(-10.3)); // 10.3 // 2.向上取整: 5 System.out.println(Math.ceil(4.00000001)); // 5.0 System.out.println(Math.ceil(4.0)); // 4.0 // 3.向下取整:4 System.out.println(Math.floor(4.99999999)); // 4.0 System.out.println(Math.floor(4.0)); // 4.0 // 4.求指数次方 System.out.println(Math.pow(2 , 3)); // 2^3 = 8.0 // 5.四舍五入 10 System.out.println(Math.round(4.49999)); // 4 System.out.println(Math.round(4.500001)); // 5 System.out.println(Math.random()); // 0.0 - 1.0 (包前不包后) // 拓展: 3 - 9 之间的随机数 (0 - 6) + 3 // [0 - 6] + 3 int data = (int)(Math.random() * 7) + 3; System.out.println(data); }}

import java.math.BigDecimal;import java.math.RoundingMode;import java.text.SimpleDateFormat;import java.util.Arrays;/** 目标:System系统类的使用。 System代表当前系统。(虚拟机系统) 静态方法: 1.public static void exit(int status):终止JVM虚拟机,非0是异常终止。 2.public static long currentTimeMillis():获取当前系统此刻时间毫秒值。(重点) 3.可以做数组的拷贝。 arraycopy(Object var0, int var1, Object var2, int var3, int var4); * 参数一:原数组 * 参数二:从原数组的哪个位置开始赋值。 * 参数三:目标数组 * 参数四:赋值到目标数组的哪个位置 * 参数五:赋值几个。 */public class SystemDemo { public static void main(String[] args) { System.out.println("程序开始。。。"); // System.exit(0); // JVM终止! // 2、计算机认为时间有起源:返回1970-1-1 00:00:00 走到此刻的总的毫秒值:时间毫秒值。 long time = System.currentTimeMillis(); System.out.println(time); long startTime = System.currentTimeMillis(); // 进行时间的计算:性能分析 for (int i = 0; i < 100000; i++) { System.out.println("输出:" + i); } long endTime = System.currentTimeMillis(); System.out.println((endTime - startTime)/1000.0 + "s"); // 3、做数组拷贝(了解) /** arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 参数一:被拷贝的数组 参数二:从哪个索引位置开始拷贝 参数三:复制的目标数组 参数四:粘贴位置 参数五:拷贝元素的个数 */ int[] arr1 = {10, 20, 30, 40, 50, 60, 70}; int[] arr2 = new int[6]; // [0, 0, 0, 0, 0, 0] ==> [0, 0, 40, 50, 60, 0] System.arraycopy(arr1, 3, arr2, 2, 3); System.out.println(Arrays.toString(arr2)); System.out.println("-------------------"); double i = 10.0; double j = 3.0;//// System.out.println(k1); System.out.println("程序结束。。。。"); }}

import java.math.BigDecimal;import java.math.RoundingMode;import java.text.NumberFormat;/** 目标:BigDecimal大数据类。 引入: 浮点型运算的时候直接+ * / 可能会出现数据失真(精度问题)。 BigDecimal可以解决浮点型运算数据失真的问题。 BigDicimal类: 包:java.math. 创建对象的方式(最好的方式:) public static BigDecimal valueOf(double val) :包装浮点数成为大数据对象。 方法声明 public BigDecimal add(BigDecimal value) 加法运算 public BigDecimal subtract(BigDecimal value) 减法运算 public BigDecimal multiply(BigDecimal value) 乘法运算 public BigDecimal divide(BigDecimal value) 除法运算 public double doublevalue(): 把BigDecimal转换成double类型。 */public class BigDecimalDemo { public static void main(String[] args) { // 浮点型运算的时候直接+ * / 可能会出现数据失真(精度问题)。 System.out.println(0.09 + 0.01); System.out.println(1.0 - 0.32); System.out.println(1.015 * 100); System.out.println(1.301 / 100); System.out.println("-------------------------"); double a = 0.1; double b = 0.2; double c = a + b; System.out.println(c); System.out.println("--------------------------"); // 包装浮点型数据成为大数据对象 BigDeciaml BigDecimal a1 = BigDecimal.valueOf(a); BigDecimal b1 = BigDecimal.valueOf(b); BigDecimal c1 = a1.add(b1); // BigDecimal c1 = a1.subtract(b1); // BigDecimal c1 = a1.multiply(b1); // BigDecimal c1 = a1.divide(b1); System.out.println(c1); // 目的:double double rs = c1.doublevalue(); System.out.println(rs); // 注意事项:BigDecimal是一定要精度运算的 BigDecimal a11 = BigDecimal.valueOf(10.0); BigDecimal b11 = BigDecimal.valueOf(3.0); /** 参数一:除数 参数二:保留小数位数 参数三:舍入模式 */ BigDecimal c11 = a11.divide(b11, 2, RoundingMode.HALF_UP); // 3.3333333333 System.out.println(c11); System.out.println("-------------------"); }}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。