类的定义
类:对一类事物抽象所得到的一个概念
对象:一个具体的事物
对象是由属性和方法组成,类描述的是对象的结构;属性,描述类的特性,称为成员变量;类的方法描述动作,称为成员方法
[类修饰符] class类名 {
// 属性定义---静态特征
[属性修饰符] 属性数据类型 属性名;
// 方法定义---动态行为
[方法修饰符] 方法返回值类型 方法名( [参数列表] ){
方法体
}
}
public class Student {
// 类的属性定义
String name; // 姓名
int height; // 身高
boolean isMan = true; // 是否男性;默认赋值是
int age; // 年龄
String favourite; // 爱好
// 方法定义
public void display() {
System.out.println("姓名:" + name + ",年龄:" + age + ",爱好:" + favourite);
}
}
类的使用
定义类实际就是定义一个数据类型,根据数据类型可以声明变量。根据类也可以声明变量,称为对象。
类实例化
类名 对象名 = new 类名( ) ;
访问属性和方法
对象名.属性名
对象名.方法名(参数列表)
public class D2 {
public static void main(String[] args) {
// 对象实例化
Student example = new Student();
// 属性的访问
example.name = "墨渐生微";
example.age = 21 ;
example.height = 175 ;
example.favourite = "女" ;
// 方法的调用
example.display();
}
}
对象数组
数组引用变量是存放在栈内存(stack)中,数组元素是存放在堆内存(heap)中,通过栈内存中的指针指向对应元素在堆内存中的位置来实现访问
public class D1 {
public static void main(String[] args) {
// 创建对象数组,引用变量为stu
Student[] stu = new Student[5] ;
// 输出stu对象数组,数组内容为null
System.out.println(Arrays.toString(stu));
/*
* stu数组是存放Student类型对象地址的变量
* 定义引用类型数组只是开辟了存放改类型对象地址的空间
*/
for (int i = 0; i < stu.length; i++) {
// 为引用类型数组赋值,使其数组元素指向了具体的对象空间
stu[i] = new Student() ;
}
// 输出stu对象数组,数组内容为对象空间的地址
System.out.println(Arrays.toString(stu));
// 为对象赋值
stu[0].name = "墨渐生微";
stu[0].age = 21 ;
stu[0].height = 175 ;
stu[0].favourite = "女" ;
// 调用方法
stu[0].display();
}
}
日期
java.util.Date:获取时间
import java.util.Date;
public class D2 {
public static void main(String[] args) {
// 通过Date类定义time获取当前系统时间
Date time = new Date() ;
System.out.println("当前系统时间:"+time);
// 调用getTime()方法获取距格林尼治时间差
long timeDifference = time.getTime();
System.out.println("格林尼治时间:"+timeDifference+"毫秒");
// 调用静态currentTimeMillis()方法获取距格林尼治时间差
System.out.println("格林尼治时间:"+System.currentTimeMillis()+"毫秒");
}
}
java.text.SimpleDateFormat:格式化时间
import java.text.SimpleDateFormat;
import java.util.Date;
/*
* 将Date类型时间转换成String(指定)格式
*/
public class D3 {
public static void main(String[] args) {
Date time = new Date();
System.out.println("当前系统时间(Date格式):"+time);
/*
* yyyy 年 MM 月 dd 日 HH/hh 时(24/12时制) mm 分 ss 秒
*/
// 通过SimpleDateFormat类传入时间格式
SimpleDateFormat formatTime = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
// 调用format()方法将Date类型时间转换成传入的时间格式字符串
String stime = formatTime.format(time);
System.out.println("时间:"+stime);
}
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
* 将String(指定)格式时间转换成Date类型
*/
public class D4 {
public static void main(String[] args) throws ParseException {
String stime = "2018-9-23 13:45";
// 通过SimpleDateFormat类传入时间格式
SimpleDateFormat formatTime = new SimpleDateFormat("yyyy-MM-dd HH:mm");
// 调用parse()方法将传入的时间格式字符串转换成Date类型时间
Date time = formatTime.parse(stime);
System.out.println("默认时间:"+stime);
System.out.println("Date类型:"+time);
}
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
* 计算时间差
*/
public class D5 {
public static void main(String[] args) throws ParseException {
// 字符串时间
String stime = "1997-02-12 12:24:56";
// 获取当前系统时间
Date time = new Date();
// String转换成Date
SimpleDateFormat formatTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date agoTime = formatTime.parse(stime);
// 转换成格林尼治时间
long t1 = time.getTime();
long t2 = agoTime.getTime();
// 时间转换成年
long t = (t1 - t2)/1000/60/60/24/30/12 ;
System.out.println(stime+"距离现在"+t+"年");
}
}