在完成对C语言的学习后,我最近开始了对C++和Java的学习,目前跟着视频学习了一些语法,也跟着敲了一些代码,有了一定的掌握程度。现在将跟着视频做的笔记进行整理。本篇博客是整理Java知识点的第十五篇博客。
本篇博客介绍了Java的Object类,Arrays工具类和基本类型包装类。
本系列博客所有Java代码都使用IntelliJ IDEA编译运行,版本为2022.1。所用JDK版本为JDK11。
目录
所有类都直接或间接继承自Object类。Object类的构造方法是:
public Object()
public String toString()返回对象的字符串表示形式,子类可以重写此方法。
- public class object1 {
- String name;
- int age;
-
- public object1(){};
- public object1(String name,int age){
- this.name = name;
- this.age = age;
- }
-
- public void setname(String name){
- this.name = name;
- }
- public String getname(){
- return name;
- }
-
- public void setage(int age){
- this.age = age;
- }
- public int getage(){
- return age;
- }
-
- public String toString(){
- return "The name is " + name + " and the age is " + age ;
- }
- }
object1类重写了toString方法,返回关于本类成员的一些信息的字符串。
- public class objecttest1 {
- public static void main(String[] args){
- object1 obj = new object1();
- obj.setname("Kevin");
- obj.setage(18);
- System.out.println(obj.toString());
- }
- }
创建了object1类的对象obj,调用了其toString方法,并将其结果输出。
程序的输出是:
The name is Kevin and the age is 18
public boolean equals(Object obj)比较两个对象是否相等。默认比较地址,可以通过重写改为比较内容。
- public class object2 {
- String name;
- int age;
-
- public object2(){};
- public object2(String name,int age){
- this.name = name;
- this.age = age;
- }
-
- public void setname(String name){
- this.name = name;
- }
- public String getname(){
- return name;
- }
-
- public void setage(int age){
- this.age = age;
- }
- public int getage(){
- return age;
- }
-
-
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- object2 object2 = (object2) o;
- return age == object2.age && name.equals(object2.name);
- }
- }
object2类重写了equals方法。
- public class objecttest2 {
- public static void main(String[] args){
- object2 obj1 = new object2();
- obj1.setname("Laura");
- obj1.setage(14);
-
- object2 obj2 = new object2("Laura",14);
- System.out.println(obj1.equals(obj2));
- }
- }
创建了两个object2类对象,并进行比较。程序的输出是:
true
Arrays类包含用于操作数组的一些方法。
public static String toString(int[] a)返回指定数组内容的字符串表示。
public static void sort(int[] a)按照数字顺序排列指定的数组,默认升序。
使用Arrays类需要导包,import java.util.Arrays
- import java.util.Arrays;
- public class array {
- public static void main(String[] args){
- int arr[] = new int[]{24, 69, 80, 57, 14};
- System.out.println(Arrays.toString(arr));
- Arrays.sort(arr);
- System.out.println(Arrays.toString(arr));
- }
- }
程序创建了一个数组,并调用了上面两个方法。程序的输出是:
[24, 69, 80, 57, 14]
[14, 24, 57, 69, 80]
冒泡排序是排序的一种算法,下面程序使用冒泡排序进行排序。
- public class bubble {
- public static void main(String[] args){
- int[] num = new int[]{24, 69, 80, 57, 13};
- int i,j;
- for(i = 0;i < num.length - 1;i += 1){
- for(j = 0; j
1;j += 1){ - if(num[j] > num[j + 1]){
- int temp = num[j];
- num[j] = num[j + 1];
- num[j + 1] = temp;
- }
- }
- }
-
- for(i = 0; i < num.length; i += 1){
- System.out.print(num[i] + " ");
- }
- System.out.println();
- }
- }
程序的输出是:
13 24 57 69 80
将基本类型封装成对象,可以在对象中定义更多的功能方法操作该数据。最常用的操作之一是用于基本数据类型和字符串之间的转换。
byte对应的包装类为Byte,short类对应的包装类为Short,int类对应的包装类为Integer,long类的包装类为Long,float类的包装类为Float,double类的包装类为Double,char类的包装类为Character,boolean类的包装类为Boolean。
下面的内容以Integer类为例,其他包装类大同小异。
Integer用于包装一个对象中原始类型int的值。
public static Integer valueOf(int i)返回指定的int值的Integer实例。
public static Integer valueOf(String s)返回一个保存指定值的String对象的Integer实例。
- public class integertest {
- public static void main(String[] args){
- Integer i1 = Integer.valueOf(100);
- System.out.println(i1);
- Integer i2 = Integer.valueOf("100");
- System.out.println(i2);
- }
- }
这段程序利用了这两个方法。程序的输出是:
100
100
基本类型包装类最常见的操作是用于基本类型和字符串的转换。
public static String valueOf(int i)返回int参数的字符串表示形式,是String类中的方法。
public static int parseInt(String s)将字符串解析为int类型,是Integer类中的方法。
- public class intstring {
- public static void main(String[] args){
- int number = 100;
- String s1 = "" + number;
- System.out.println(s1);
- String s2 = String.valueOf(number);
- System.out.println(s2);
-
- String s3 = "100";
- Integer i = Integer.valueOf(s3);
- int x = i.intValue();
- System.out.println(x);
-
- int y = Integer.parseInt(s3);
- System.out.println(y);
- }
- }
程序的输出是:
100
100
100
100
- import java.util.Arrays;
- public class sortstring {
- public static void main(String[] args){
- String str = "91 27 46 38 50";
- String[] strs = str.split(" ");
-
- int i;
- int arr[] = new int[strs.length];
- for(i = 0;i < strs.length; i += 1){
- arr[i] = Integer.parseInt(strs[i]);
- }
- Arrays.sort(arr);
-
- StringBuilder sb = new StringBuilder();
- for(i = 0;i < arr.length; i += 1){
- sb.append(arr[i]);
- if(i < arr.length - 1){
- sb.append(" ");
- }
- }
- String s = sb.toString();
- System.out.println(s);
- }
- }
程序创建了一个字符串str,内部是空格分隔的数字。随后将str按空格打碎,用字符串数组strs接收。随后遍历strs,将每个成员转换为int,放在数组arr里,然后将arr排序。然后通过StringBuilder创建了一个字符串并输出。程序的输出是:
27 38 46 50 91
装箱就是把基本数据类型转换为对应的包装类型。拆箱就是把包装类类型转换为对应的基本数据类型。JDK5后引入了自动装箱和拆箱。
- public class box {
- public static void main(String[] args){
- int number = 15;
- Integer i1 = Integer.valueOf(number);
- System.out.println(i1);
- Integer i2 = number;
- System.out.println(i2);
-
- int num1 = i2.intValue();
- System.out.println(num1);
- int num2 = i2;
- System.out.println(i2);
-
- }
- }
程序中只使用了等号就完成了装箱和拆箱。程序的输出是:
15
15
15
15