网站移动版怎么做,淄博阿雷网站建设,网站页面设计主要包括,网站引导动画话接上回#xff0c;继续核心类与API的学习#xff0c;最后介绍一下Object类以及与数学、日期/时间有关的类#xff0c;就结束该部分的学习了#xff0c;其他的根据需要自行了解。
一、Object类
1、概述
Object 是 Java 类库中的一个特殊类#xff0c;也是所有类的父类…话接上回继续核心类与API的学习最后介绍一下Object类以及与数学、日期/时间有关的类就结束该部分的学习了其他的根据需要自行了解。
一、Object类
1、概述
Object 是 Java 类库中的一个特殊类也是所有类的父类任何 Java 对象都可以调用 Object 类的方法。Java 允许把任何类型的对象赋给 Object 类型的变量。当一个类被定义后如果没有指定继承的父类那么默认父类就是 Object 类。(向上和向下转型问题在讲面向对象的继承特性那里讲过不熟悉的可回去了解) 注所有的对象都可以向 Object 进行转换包含数组和接口类型即一切的引用数据类型都可以使用 Object 进行接收。 2、Object类常用方法
2.1 toString()方法常用
返回该对象的字符串当程序输出一个对象或把某个对象和字符串进行连接运算时系统会自动调用该对象的 toString() 方法返回该对象的字符串表示。案例如下
//加上toString()变灰系统提示不必要说明对象输出时一定会调用Object类的toString()方法打印内容。
public class Demo {public static void main(String[] args){Demo dnew Demo();System.out.println(d); //Demo15db9742不加toString()输出System.out.println(d.toString()); //Demo15db9742加上toString()输出}
}//重写Object类的toString()方法,通过调用被子类重写过的toString()方法获取对象的一些信息
class Person { // 定义一个测试类personprivate String name; // 封装私有化成员变量private int age;public Person(String name, int age){ // 带全部参数的构造方法(与类同名)this.namename; //this指向当前实例对象属性this.ageage;}public String toString(){ // 重写父类(Object类)toString()方法方法名和父类保持相同。(相同签名)return 姓名this.name 年龄this.age;}public static void main(String[] args){Person pnew Person(zhangsan,20); // 实例化Person对象System.out.println(p.toString()); // 调用toString方法可不写。// 子类默认调用Object类的toString()方法重写后调用重写的toString()方法}
}运行Person测试类结果为
姓名zhangsan 年龄202.2 equals()方法
比较两个字符串的内容是否相等。注意与区别。 “”比较的是 引用的变量地址是否相等即比较两个引用变量是否指向同一个实例 (在String类中讲过)通常字符串的比较只是关心内容是否相等。 案例实现用户登录的验证功能用户名密码都为admin
import java.util.Scanner; //导包
public class AdminDemo {public static boolean Login(String name,String pwd) {boolean con; //初始化if (name.equals(admin) pwd.equals(admin)) { //同时满足con true;} else {con false;}return con;}public static void main(String[] args){Scanner scnew Scanner(System.in); //获取用户输入System.out.println(------欢迎使用就业服务管理平台------);System.out.println(用户名);String name sc.next();System.out.println(密码);String pwd sc.next();boolean conLogin(name,pwd); //调用Login()方法if(con){ //登录结果System.out.println(登录成功);}else{System.out.println(用户名或密码有误);}}
}运行结果
------欢迎使用就业服务管理平台------
用户名
admin
密码
amdin
用户名或密码有误2.3 getClass()方法
返回对象所属的类是一个 Class 对象。通过 Class 对象可以获取该类的各种信息包括类名、父类以及它所实现接口的名字等。 //对String类型调用getClass()方法并输出其父类及实现的接口信息public class Test02 {public static void printClassInfo(Object obj) { System.out.println(类名 obj.getClass().getName()); // 获取类名 System.out.println(父类 obj.getClass().getSuperclass().getName()); // 获取父类名System.out.println(实现的接口有); // 获取实现的接口并输出for (int i 0; i obj.getClass().getInterfaces().length; i) {System.out.println(obj.getClass().getInterfaces()[i]);}}public static void main(String[] args) {String strObj new String();printClassInfo(strObj);}
}运行结果
类名java.lang.String
父类java.lang.Object
实现的接口有
interface java.io.Serializable
interface java.lang.Comparable
interface java.lang.CharSequence2.4 clone()方法
创建并返回一个对象的拷贝浅拷贝对象内属性引用的对象只拷贝引用地址而不会将引用的对象重新分配内存而深拷贝则会连引用的对象也重新创建 注由于 Object 本身没有实现 Cloneable 接口所以不重写 clone 方法并进行调用的话会发生CloneNotSupportedException 异常。(面试题拓展浅拷贝与深拷贝的底层实现机制有兴趣的自行了解) public class CloneDemo implements Cloneable{ //创建一个Cloneable接口的实现类String name; //声明变量int age;public static void main(String[] args) throws CloneNotSupportedException { //抛出异常CloneDemo clnew CloneDemo(); //创建对象cl.namezhangsan; //初始化变量cl.age21;System.out.println(cl.name);System.out.println(cl.age);CloneDemo cl1(CloneDemo)cl.clone(); //创建cl的拷贝System.out.println(cl1.name); //打印结果System.out.println(cl1.age);}
}运行结果
zhangsan
21
zhangsan
212.5 hashcode()方法
返回对象哈希值是一个整数表示在哈希表中的位置。 1案例1
public class HashCodeDemo {//Object类是所有类的父类默认继承Object类public static void main(String[] args){// Object使用hashCode()Object obj1 new Object();//子类可以调用Object类的任何方法如hashCode()方法System.out.println(obj1.hashCode()); //985922955Object obj2 new Object();System.out.println(obj2.hashCode()); //1435804085Object obj3 new Object();System.out.println(obj3.hashCode()); //1784662007}
}2案例2
//String和ArrayList类都继承了Object可以直接使用 hashCode()方法
import java.util.ArrayList; //导包
public class HashCodeDemo {//Object类是所有类的父类默认继承Object类public static void main(String[] args){String snew String();//创建String对象System.out.println(s.hashCode()); //0String调用hashCode()ArrayListInteger listnew ArrayList();//1创建ArrayList对象System.out.println(list.hashCode()); //ArrayList调用hashCode()}
}3案例3
//两个对象相等,哈希值也相等
public class HashCodeDemo {//Object类是所有类的父类默认继承Object类public static void main(String[] args){Object obj1 new Object();Object obj2 obj1; // obj1赋值给obj2(引用复制指向同一个对象)System.out.println(obj1.equals(obj2)); // trueSystem.out.println(obj1.hashCode()); // 985922955System.out.println(obj2.hashCode()); // 985922955}
}二、与数学相关了解
1、Number Math类
1.1 概述
Math类提供了大量的静态方法用来进行数学计算。基本数学运算如初等指数、对数、平方根和三角函数等随机数都是类方法。 所有的包装类Integer、Long、Byte、Double、Float、Short都是抽象类 Number 的子类。 1.2 常用方法
比较简单不一一列举简单看几个其他的自行了解。
parseInt()将字符串解析为int类型。
ceil()返回 给定参数的的最小整数类型为双精度浮点型。
floor()返回给定参数的最大整数 。
rint()返回与参数最接近的整数。类型为double。
round()四舍五入。
random()返回带正号的 double 值伪随机数范围[0.0, 1.0)。
常量double pi Math.PI; // 3.14159...double e Math.E; // 2.7182818...三、与日期/时间相关
主要介绍一下Date类和Calendar类Date 类封装了系统的日期和时间信息Calendar 类则根据系统的日历来解释 Date 对象。
1、Date类
表示系统特定的时间戳可以精确到毫秒。
1.1 Date类构造方法
1Date()获取本地的当前时间。(无参构造方法) 2Date(long date)表示从 GMT(格林尼治时间)1970 年 1 月 1 日 0 时 0 分 0 秒开始经过参数 date 指定的毫秒数。(long类型参数的构造方法)
1.2 案例
案例1
import java.util.Date; //导包
public class DateDemo {public static void main(String[] args){Date date1new Date(); // 调用无参数构造函数System.out.println(date1); // Sun Jan 15 10:12:59 CST 2023Date date2new Date(60000);// 调用含有一个long类型参数的构造函数System.out.println(date2); // Thu Jan 01 08:01:00 CST 1970}
}案例2 某一天特定时间要去做一件事而且那个时间已经过去一分钟之后才想起来这件事还没有办这时系统将会提示已经过去了多长时间。
import java.util.Date; //导包
import java.util.Scanner;
public class DateDemo {public static void main(String[] args){Scanner input new Scanner(System.in);System.out.println(请输入要做的事情);String title input.next();Date date1 new Date(); // 获取当前日期System.out.println([ title ] 这件事发生时间为 date1);try {Thread.sleep(60000);// 暂停 1 分钟} catch (InterruptedException e) {e.printStackTrace();}Date date2 new Date();System.out.println(现在时间为 date2);if (date2.before(date1)) {System.out.println(你还有 (date2.getTime() - date1.getTime()) / 1000 秒需要去完成【 title 】这件事);} else {System.out.println(【 title 】事情已经过去了 (date2.getTime() - date1.getTime()) / 1000 秒);//毫秒转化为秒}}
}结果
做饭
[做饭] 这件事发生时间为Sun Jan 15 10:20:09 CST 2023
现在时间为Sun Jan 15 10:21:09 CST 2023
【做饭】事情已经过去了 60 秒2、Calendar类
抽象类为特定瞬间与 YEAR、MONTH、DAY_OF—MONTH、HOUR 等日历字段之间的转换提供了一些方法并为操作日历字段如获得下星期的日期 提供了一些方法。 注创建 Calendar 对象不能用 new 关键字因为 Calendar类是一个抽象类但是它提供了一个 getInstance() 方法来获得 Calendar类的对象。getInstance()方法之前也提过用来返回一个类的唯一实例其往往是static的常见于单例模式的类中。 直接来看一个打印日历的小案例
//演示日历
import java.util.Calendar; //导包
import java.util.Date;
public class DateDemo {public static void main(String[] args){Date datenew Date();System.out.println(当前时间为date); //获取当前时间Calendar calendar Calendar.getInstance();calendar.set(2023, 0, 15); // 实际的calendar对象所表示的日期为2023年1月15日// 判断2023年1月15日为一周中的第几天int index calendar.get(Calendar.DAY_OF_WEEK) - 1;char[] title { 日, 一, 二, 三, 四, 五, 六 }; // 存放曰历的头部int daysArray[][] new int[6][7];// 存放日历的数据int daysInMonth 31; // 该月的天数int day 1; // 自动增长for (int i index; i 7; i) {// 填充第一周的日期数据即日历中的第一行daysArray[0][i] day;}for (int i 1; i 6; i) {// 填充其他周的日历数据控制行for (int j 0; j 7; j) {// 如果当前day表示的是本月最后一天则停止向数组中继续赋值if (day daysInMonth) {i 6;break;}daysArray[i][j] day;}}System.out.println(------------------2023 年 1 月--------------------\n);for (int i 0; i title.length; i) {System.out.print(title[i] \t);}System.out.print(\n);// 输出二元数组daysArray中的元素for (int i 0; i 6; i) {for (int j 0; j 7; j) {if (daysArray[i][j] 0) {if (i ! 0) {// 如果到月末则完成显示日历的任务停止该方法的执行return;}System.out.print(\t);continue;}System.out.print(daysArray[i][j] \t);}System.out.print(\n);}}
}运行结果
当前时间为Sun Jan 15 10:48:12 CST 2023
------------------2023 年 1 月--------------------日 一 二 三 四 五 六
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31