이 글에서는 향후 개발에서 자주 사용될 Object 클래스, 날짜 및 시간 클래스, StringBuilder 클래스, 패키징 클래스 등 일반적으로 사용되는 여러 Java API를 소개합니다.
객체 클래스
Java.lang.Object 클래스는 Java 언어의 루트 클래스로 모든 클래스의 상위 클래스입니다. 여기에 설명된 모든 메서드는 하위 클래스에서 사용할 수 있습니다. 객체가 인스턴스화되면 객체가 찾는 최종 상위 클래스는 Object입니다.
Object 클래스에는 11개의 멤버 메서드가 포함되어 있습니다. 일반적으로 사용되는 두 가지 메서드만 나열하겠습니다.
- public String toString():返回该对象的字符串表示。 - public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。
1. toString 메서드
public String toString()
: 개체의 문자열 표현을 반환합니다. public String toString()
:返回该对象的字符串表示。
toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值,由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,一般都会重写它。
方法重写:
//重写toString方法 @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; }
2.equals方法
public boolean equals(Object obj)
:指示其他某个对象是否与此对象“相等”。
调用成员方法equals并指定参数为另一个对象,则可以判断这两个对象是否是相同的。这里的“相同”有默认和自定义两种方式。
如果没有覆盖重写equals方法,那么Object类中默认进行==
运算符的对象地址比较,只要不是同一个对象,结果必然为false。
方法重写:
/* Object类的equals方法,默认比较的是两个对象的地址值 重写equals方法,比较两个对象的属性 问题: 隐含这一个多态,无法使用子类特有的内容(属性和方法) 解决: 可以使用向下转型(强制类型转换)把o类型转换为Person */ //重写equals方法 @Override public boolean equals(Object o){ //增加一个判断,如果传递的参数是this本身,直接返回true if(this==o) return true; //增加一个判断,如果传递的参数是null,直接返回false if(o==null) return false; //增加一个判断,防止类型转换一次ClassCastException if(o instanceof Person){ //使用向下转型,把o转换为Person类型 Person p=(Person)o; //比较两个对象的属性,一个对象是this(p1),一个对象是p(o->p2) boolean b=this.name.equals(p.name) && this.age==p.age; return b; } //不是Person类型,返回false return false;
日期时间类
1.Date类
java.util.Date 类表示特定的瞬间,精确到毫秒。
常用方法:
public long getTime() 把日期对象转换成对应的时间毫秒值。
实例:
/* long getTime() 把日期转换为毫秒值(相当于System.currentTimeMillis()方法) 返回自1970年1月1日0点0分0秒 GMT以来此Date对象表示的毫秒数 */ public static void demo3(){ Date date =new Date(); long time=date.getTime(); System.out.println(time); } //结果值 1533119389083
2.DateFormat类
java.text.DateFormat
是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。
格式化:按照指定的格式,从Date对象转换为String对象。
解析:按照指定的格式,从String对象转换为Date对象。
常用两个方法:
- public String format(Date date):将Date对象格式化为字符串。 - public Date parse(String source):将字符串解析为Date对象。
实例:
package demo2_Date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Test02_Dateformat { public static void main(String[] args) throws ParseException { //将date对象格式化为字符串 find_Date01(); //将字符串解析为date对象 find_Date02(); } //将字符串解析为date对象 public static void find_Date01() throws ParseException { SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); String str="2018年8月1日 7点12分23秒"; Date s=sdf.parse(str); System.out.println(new Date()); } //将date对象格式化为字符串 public static void find_Date02(){ SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); String s=sdf.format(new Date()); System.out.println(s); } }
计算出生天数:
package demo2_Date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; /* 计算出生天数 1.键盘录入出生日期,并转换date类型(毫秒值) 2.获取当前日期毫秒值 3.相减得到差值毫秒值,转换得到天数 */ public class Test03_FindBirthday { public static void main(String[] args) throws ParseException { //录入出生日期 Scanner sc=new Scanner(System.in); System.out.println("请输入你的出生日期:格式(yyyy-MM-dd)"); String bithDateString=sc.next(); //使用DateFormat类中的parse方法,把字符串类型的出生日期,转换成为date类型 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); Date birthDate=sdf.parse(bithDateString); //把出生日期转换为毫秒值 long birthDateTime=birthDate.getTime(); long nowDateTime=new Date().getTime(); long daysTime=nowDateTime-birthDateTime; //获取天数 System.out.println(daysTime/1000/60/60/24); } }
输出结果:
请输入你的出生日期:格式(yyyy-MM-dd) 1996-05-24 8104 Process finished with exit code 0
3.Calendar类
概念:
java.util.Calendar
public static Calendar getInstance():使用默认时区和语言环境获得一个日历2.equals 메서드
public boolean equals(Object obj)
: 다른 개체가 이 개체와 "동일"한지 여부를 나타냅니다. 멤버 메소드 equals를 호출하고 매개변수를 다른 객체로 지정하면 두 객체가 동일한지 확인할 수 있습니다. 여기에는 기본과 사용자 정의라는 두 가지 "동일" 방법이 있습니다. equals 메서드가 재정의되지 않으면 ==
연산자의 개체 주소 비교는 기본적으로 Object 클래스에서 수행됩니다. 동일한 개체가 아닌 한 결과는 false여야 합니다. . 메서드 재정의: - public int get(int field):返回给定日历字段的值。 - public void set(int field, int value):将给定的日历字段设置为给定值。 - public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。 - public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象Date time class1.Date classjava.util.Date 클래스는 밀리초까지 정확한 특정 순간을 나타냅니다. 일반적인 메소드:
package demo2_Date;
import java.util.Calendar;
import java.util.Date;
/*
四种常用成员方法:
- public int get(int field):返回给定日历字段的值。
- public void set(int field, int value):将给定的日历字段设置为给定值。
- public abstract void add(int field, int amount):根据日历的规则,
为给定的日历字段添加或减去指定的时间量。
- public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
*/
public class Test04_Calendar {
public static void main(String[] args) {
// demo1();
// demo2();
demo3();
demo4();
}
/*
- public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
*/
public static void demo4(){
Calendar cal=Calendar.getInstance();
Date date=cal.getTime();
System.out.println(date); //Wed Aug 01 19:20:51 CST 2018
}
/*
public abstract void add(int field, int amount):根据日历的规则,
为给定的日历字段添加或减去指定的时间量。
参数:设定指定的日历字段以及修改量
返回值:修改过后的日历字段代表的值
*/
public static void demo3(){
Calendar cal =Calendar.getInstance();
//加两年,减两月
cal.add(Calendar.YEAR,+2);
cal.add(Calendar.MONTH,-2);
int year =cal.get(Calendar.YEAR);
int month=cal.get(Calendar.MONTH)+1;
int day=cal.get(Calendar.DAY_OF_MONTH);
System.out.println(year+"年"+month+"月"+day+"日");// 2020年6月1日
}
/*
public void set(int field, int value):将给定的日历字段设置为给定值。
参数:设定指定的日历字段以及设置值
返回值:重新设定的日历字段代表的值
*/
public static void demo2(){
//创建Calendar对象
Calendar cal= Calendar.getInstance();
cal.set(Calendar.YEAR ,2020);
int year=cal.get(Calendar.YEAR);
System.out.println(year+"年"); //2020年
}
/*
public int get(int field):返回给定日历字段的值。
参数:传递指定的日历字段(YEAR,MONTH)
返回值:日历字段代表的具体的值
*/
public static void demo1(){
//创建Calendar对象
Calendar cal= Calendar.getInstance();
//获取年份
int year =cal.get(Calendar.YEAR);
//获取月份
int month=cal.get(Calendar.MONTH)+1;
int day=cal.get(Calendar.DAY_OF_MONTH);
System.out.println(year+"年"+month+"月"+day+"日"); //2018年8月1日
}
}
인스턴스: package demo3_System; import java.util.Arrays; /* 两个常用方法: 1.currentTimeMillis 2.arraycopy */ public class Test01_System { public static void main(String[] args) { demo1(); demo2(); } //将数组中指定的数据拷贝到另一个数组中。 public static void demo2(){ int[] arr1={1,2,3,4,5}; int[] arr2={6,7,8,9,10}; System.arraycopy(arr1,0,arr2,0,3); System.out.println(Arrays.toString(arr2)); //[1, 2, 3, 9, 10] } //返回以毫秒为单位的时间 public static void demo1(){ long begin=System.currentTimeMillis(); int sum=0; for(int i=0;i<10000;i++){ System.out.println(i); } long end=System.currentTimeMillis(); System.out.println(end-begin); //205毫秒 }2.DateFormat 클래스
java.text.DateFormat
는 날짜/시간 형식 지정 하위 클래스의 추상 클래스입니다. 이 클래스를 사용하면 도움이 될 수 있습니다. 날짜와 텍스트 사이의 변환을 완료합니다. 즉, Date 객체와 String 객체 사이를 앞뒤로 변환할 수 있습니다.
Formatting
: 지정된 형식에 따라 Date 객체를 String 객체로 변환합니다.Parsing
: 지정된 형식에 따라 String 객체를 Date 객체로 변환합니다.생년월일 계산: | rrreee출력 결과: | rrreee
개념: |
java.util.Calendar Date 뒤에 나타나며 많은 Date 메서드를 대체하는 달력 클래스입니다. 이 클래스는 쉽게 액세스할 수 있도록 가능한 모든 시간 정보를 정적 멤버 변수로 캡슐화합니다. Calendar 클래스는 다양한 시간 속성을 얻는데 편리합니다. |
Calendar는 정적 메서드를 통해 하위 클래스 객체를 생성하고 반환하는 추상 클래스입니다. | rrreee공통 메서드: Calendar에는 네 가지 일반적인 메서드가 있으며 주로 get 메서드와 getTime 메서드입니다. | rrreee
시스템 클래스 | 1.currentTimeMillis 메소드 |
2.arraycopy method | 배열에 지정된 데이터를 다른 배열에 복사합니다. |
StringBuilder 클래스 | 1. 개요 |
2. 일반적으로 사용되는 방법: | rrreee3. 예: | rrreee
1. | 기본 유형--패키징 클래스 |
기본 유형 | 해당 패키징 클래스(java.lang 패키지에 위치) |
2. Unboxing 및 Packing
기본 유형과 해당 패키징 클래스 객체 사이를 오가는 변환 과정을 "boxing" 및 "unboxing"이라고 합니다.
Boxing: 기본 유형에서 해당 래퍼 클래스 객체로 변환합니다.
Unboxing: 래퍼 클래스 개체에서 해당 기본 유형으로 변환합니다.
3. 자동 언박싱 및 자동 패킹
기본 유형과 패키징 클래스 간에 변환이 필요한 경우가 많기 때문에 Java 5(JDK 1.5)부터는 기본 유형 및 패키징 클래스의 boxing 및 unboxing 작업이 자동으로 수행됩니다. 그러니 우리는 아무것도 할 필요가 없습니다. 그렇죠, 이게 자동포장과 자동박스킹이라 놀랍지도 놀랍지도 않습니다.
관련 기사:
[java 튜토리얼] Java StringBuffer 및 StringBuilder 클래스
위 내용은 일반적으로 사용되는 Java API: 객체 클래스, 날짜 및 시간 클래스, StringBuilder 클래스, 패키징 클래스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

신흥 기술은 위협을 일으키고 Java의 플랫폼 독립성을 향상시킵니다. 1) Docker와 같은 클라우드 컴퓨팅 및 컨테이너화 기술은 Java의 플랫폼 독립성을 향상 시키지만 다양한 클라우드 환경에 적응하도록 최적화되어야합니다. 2) WebAssembly는 Graalvm을 통해 Java 코드를 컴파일하여 플랫폼 독립성을 확장하지만 성능을 위해 다른 언어와 경쟁해야합니다.

다른 JVM 구현은 플랫폼 독립성을 제공 할 수 있지만 성능은 약간 다릅니다. 1. OracleHotspot 및 OpenJDKJVM 플랫폼 독립성에서 유사하게 수행되지만 OpenJDK에는 추가 구성이 필요할 수 있습니다. 2. IBMJ9JVM은 특정 운영 체제에서 최적화를 수행합니다. 3. Graalvm은 여러 언어를 지원하며 추가 구성이 필요합니다. 4. AzulzingJVM에는 특정 플랫폼 조정이 필요합니다.

플랫폼 독립성은 여러 운영 체제에서 동일한 코드 세트를 실행하여 개발 비용을 줄이고 개발 시간을 단축시킵니다. 구체적으로, 그것은 다음과 같이 나타납니다. 1. 개발 시간을 줄이면 하나의 코드 세트 만 필요합니다. 2. 유지 보수 비용을 줄이고 테스트 프로세스를 통합합니다. 3. 배포 프로세스를 단순화하기위한 빠른 반복 및 팀 협업.

Java'SplatformIndenceFacilitatesCodereScoderEByWatHeAveringByTeCodetOrunonAnyPlatformwitHajvm.1) DevelopersCanwriteCodeOnceforConsentEStentBehaviorAcRossPlatforms.2) MAINTENDUCEDSCODEDOES.3) LIBRRIESASHSCORAREDERSCRAPERAREDERSPROJ

Java 응용 프로그램의 플랫폼 별 문제를 해결하려면 다음 단계를 수행 할 수 있습니다. 1. Java의 시스템 클래스를 사용하여 시스템 속성을보고 실행중인 환경을 이해합니다. 2. 파일 클래스 또는 java.nio.file 패키지를 사용하여 파일 경로를 처리하십시오. 3. 운영 체제 조건에 따라 로컬 라이브러리를로드하십시오. 4. visualVM 또는 JProfiler를 사용하여 크로스 플랫폼 성능을 최적화하십시오. 5. 테스트 환경이 Docker Containerization을 통해 생산 환경과 일치하는지 확인하십시오. 6. githubactions를 사용하여 여러 플랫폼에서 자동 테스트를 수행하십시오. 이러한 방법은 Java 응용 프로그램에서 플랫폼 별 문제를 효과적으로 해결하는 데 도움이됩니다.

클래스 로더는 통합 클래스 파일 형식, 동적로드, 부모 위임 모델 및 플랫폼 독립적 인 바이트 코드를 통해 다른 플랫폼에서 Java 프로그램의 일관성과 호환성을 보장하고 플랫폼 독립성을 달성합니다.

Java 컴파일러가 생성 한 코드는 플랫폼 독립적이지만 궁극적으로 실행되는 코드는 플랫폼 별입니다. 1. Java 소스 코드는 플랫폼 독립적 인 바이트 코드로 컴파일됩니다. 2. JVM은 바이트 코드를 특정 플랫폼의 기계 코드로 변환하여 크로스 플랫폼 작동을 보장하지만 성능이 다를 수 있습니다.

멀티 스레딩은 프로그램 대응 성과 리소스 활용을 향상시키고 복잡한 동시 작업을 처리 할 수 있기 때문에 현대 프로그래밍에서 중요합니다. JVM은 스레드 매핑, 스케줄링 메커니즘 및 동기화 잠금 메커니즘을 통해 다양한 운영 체제에서 멀티 스레드의 일관성과 효율성을 보장합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!
