찾다
Javajava지도 시간JAVA 개발에 일반적으로 사용되는 클래스 라이브러리에 대한 자세한 설명

Scanner

Scanner是一个基于正则表达式的文本扫描器,它可以从文件,输入流,字符串中解析出基本类型数值和字符串值。

Scanner使用时要导入import java.util.Scanner;

如果要使用文件,则要导入import java.io.File;

下面举两个例子:

Scanner sc=new Scanner(System.in);
		while(sc.hasNextLong())
		{
			System.out.println(sc.nextLong());
		}

上面的代码效果就是可以持续的输入long型数据,以空格间断,摁下回车键后会将这些数据依次输出。

如果sc.hasNextLong()改为sc.hasNext(),输出部分改成sc.next()就是字符串,也可以改成其它类型。

当输入类型与要求不符时,这部分程序便执行完毕,程序会执行下一部分

Scanner sc=new Scanner(new File("C:\\abc.txt"));
		//sc.useDelimiter("\\|");
		while( sc.hasNextLine())
	{
		System.out.println(sc.nextLine());
	}

如果使用文件,需要在主函数后面加上 throws Exception

另外,可以通过sc.useDelimiter()来设置分隔符,设置分隔符后,默认分隔符失效

System

System类代表了当前JAVA程序的运行平台,程序不能创建System对象。不过可以通过System直接调用一些类变量和类方法。

首先,System.gc()可以建议系统进行垃圾回收,而runFinalization()方法可以让系统启动Finalization()方法

下面是获取系统所有环境变量的代码(以下代码需要导入java.util.Map)

Map<string> env=System.getenv();
		for(String name:env.keySet())
		{
			System.out.println(name+"-------->"+env.get(name));
		}</string>

另外就是获取系统属性的代码(需要导入java,util.Properties)

Properties props=System.getProperties();
		for(Object name:props.keySet())
		{
			System.out.println(name+"-------->"+props.getProperty((String) name));
		}

System.currentTimeMillis()和System.nanoTime()都可以获取时间,返回值为一个long型整数,都为与UTC1970年1月1日午夜的时间差,前者是以毫秒为单位,后者以纳秒为单位。这两个方法在很多系统上会出错——因为有些系统是以几十毫秒为单位计算时间的。

System类提供了一个identityHashCode(Object object)方法,这个方法会返回一个以地址计算得到了HashCode()值,由于hashCode()方法在某些类里被重写了,所以有时候并不靠谱,但identityHashCode(Object object)方法不同,如果其值一致,必为同一个对象,下面用代码举例:

String str0="hello";
		String str1=new String("hello");
		String str2=new String("hello");
		String str3=str2;
		System.out.println("str0\t"+str0.hashCode()+"\t"+System.identityHashCode(str0));
		System.out.println("str1\t"+str1.hashCode()+"\t"+System.identityHashCode(str1));
		System.out.println("str2\t"+str2.hashCode()+"\t"+System.identityHashCode(str2));
		System.out.println("str3\t"+str3.hashCode()+"\t"+System.identityHashCode(str3));

以下是输出结果

str0	99162322	1296263453
str1	99162322	78255756
str2	99162322	984499128
str3	99162322	984499128

Runtime

Runtime类代表java程序的运行时环境,每一个java程序都有一个与之对应的Runtime对象,应用程序不能创建Runtime实例,不过可以getRuntime()方法获得与之对应的Runtime对象。

与System类似,Runtime也有gc()和runFinalization()方法。

此外还有load(String filename)方法和loadLibrary(String libname)方法用于加载文件和动态连接库。

下面是一个Runtime的使用实例

Runtime rt=Runtime.getRuntime();
		System.out.println("处理器数量"+rt.availableProcessors());
		System.out.println("空闲内存量"+rt.freeMemory());
		System.out.println("总内存数"+rt.totalMemory());
		System.out.println("最大内存数"+rt.maxMemory());
处理器数量4
空闲内存量126562888
总内存数127926272
最大内存数1890582528

此外,Runtime可以直接单独启动一个进程来运行系统操作命令

rt.exec("");引号之间放需要执行的命令

Object

Object是所有类、数组、枚举类的父类,也就是说,JAVA允许任何类的对象赋值给Object型的引用。

这里说一下toString()方法,该方法运行时返回“运行时类名@十六进制hashCode值”格式的字符串。

java提供了一个protected修饰的clone()方法用于实现对象的自我克隆,就是得到一个当前对象的副本,两者之间完全隔离。

要想实现克隆,该类要继承Cloneable接口(该接口里没有定义任何方法);随后该类实现自己的Clone()方法,在实现过程中要调用父类的Clone()方法

class Address
{
	String detail;
	public Address(String str)
	{
		this.detail=str;
	}
}
class User implements Cloneable
{
	int age;
	Address address;
	public User(int age)
	{
		this.age=age;
		this.address=new Address("江苏南京");
	}
	public User clone() throws CloneNotSupportedException
	{
		return (User)super.clone();
	}
}
public class Test
{
public static void main(String []args) throws CloneNotSupportedException
	{User u1=new User(23);
		User u2=u1.clone();
		System.out.println(u1==u2);
		System.out.println(u1.address==u2.address);
}
}

结果是

false
true
也就是说,克隆的对象不是原来的对象,尽管数值完全一样。

此外,clone()方法只是浅克隆,它只克隆该对象所有成员变量值,不会对引用类型的成员变量值所引用的对象进行克隆,也就是引用类型变量克隆后指向的对象和之前的是同一个。

Objects

JAVA7新增了Objects工具类,该类主要是保证“空指针“安全问题的(当然了,JAVA没有指针,但是大致是这么个意思)

如一个引用变量为null时,直接调用其toString()方法会引起NullPointerException,而使用Objects类的toString(Object object)就不会,若object为null时,会直接输出“null”字符串。

JAVA为工具类命名的习惯就是加一个字母s

String,StringBuilder,StringBuffer

String是不可变类,一旦创建,不可改变,直到销毁。

StringBuffer这是提供一个字符序列可变的字符串,可以通过append(),insert().reverse(),setCharAt(),setLength()方法来改变,一旦生成最终格式,可以调用toString()方法将其转换为字符串。

StringBuilder是JDK1.5新增的,与StringBuffer的区别在于没有考虑进程安全,所以效率略高,相同情况下优先使用StringBuilder

String类有contentEquals(StringBuffer bf)方法,用于对比内容,相同返回true

这三个类的方法是在太多了,实用的也很多,自己去看文档吧

Math

海量的方法,多到了没法列举了,基本上包含了数学所有的运算,还是自己看文档吧

BigDecimal

简单的说,java中的double对象会发生精度丢失(就是小数点后N位可能出现乱七八糟的数字),而BigDecimal类可以解决这个问题。

首先建议使用String为参数的构造器,如果必须使用double型参数,则使用BigDemical.valueOf(double value)方法,不要将double型数直接传进去

BigDecimal bd=BigDecimal.valueOf(0.05);
		BigDecimal bs=new  BigDecimal("0.01");
		BigDecimal bb=new BigDecimal(0.01);
		System.out.println(bd.add(bs));
		System.out.println(bd.add(bb));

结果是

0.06
0.06000000000000000020816681711721685132943093776702880859375

위 내용은 JAVA 개발에 일반적으로 사용되는 클래스 라이브러리에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
2025 년 상위 4 개의 JavaScript 프레임 워크 : React, Angular, Vue, Svelte2025 년 상위 4 개의 JavaScript 프레임 워크 : React, Angular, Vue, SvelteMar 07, 2025 pm 06:09 PM

이 기사는 2025 년에 상위 4 개의 JavaScript 프레임 워크 (React, Angular, Vue, Svelte)를 분석하여 성능, 확장 성 및 향후 전망을 비교합니다. 강력한 공동체와 생태계로 인해 모두 지배적이지만 상대적으로 대중적으로

카페인 또는 구아바 캐시와 같은 라이브러리를 사용하여 자바 애플리케이션에서 다단계 캐싱을 구현하려면 어떻게해야합니까?카페인 또는 구아바 캐시와 같은 라이브러리를 사용하여 자바 애플리케이션에서 다단계 캐싱을 구현하려면 어떻게해야합니까?Mar 17, 2025 pm 05:44 PM

이 기사는 카페인 및 구아바 캐시를 사용하여 자바에서 다단계 캐싱을 구현하여 응용 프로그램 성능을 향상시키는 것에 대해 설명합니다. 구성 및 퇴거 정책 관리 Best Pra와 함께 설정, 통합 및 성능 이점을 다룹니다.

Java의 클래스로드 메커니즘은 다른 클래스 로더 및 대표 모델을 포함하여 어떻게 작동합니까?Java의 클래스로드 메커니즘은 다른 클래스 로더 및 대표 모델을 포함하여 어떻게 작동합니까?Mar 17, 2025 pm 05:35 PM

Java의 클래스 로딩에는 부트 스트랩, 확장 및 응용 프로그램 클래스 로더가있는 계층 적 시스템을 사용하여 클래스로드, 링크 및 초기화 클래스가 포함됩니다. 학부모 위임 모델은 핵심 클래스가 먼저로드되어 사용자 정의 클래스 LOA에 영향을 미치도록합니다.

Node.js 20 : 주요 성능 향상 및 새로운 기능Node.js 20 : 주요 성능 향상 및 새로운 기능Mar 07, 2025 pm 06:12 PM

Node.js 20은 V8 엔진 개선, 특히 더 빠른 쓰레기 수집 및 I/O를 통해 성능을 크게 향상시킵니다. 새로운 기능에는 더 나은 webAssembly 지원 및 정제 디버깅 도구, 개발자 생산성 및 응용 속도 향상이 포함됩니다.

Spring Boot Snakeyaml 2.0 CVE-2022-1471 문제 고정Spring Boot Snakeyaml 2.0 CVE-2022-1471 문제 고정Mar 07, 2025 pm 05:52 PM

이 기사는 원격 코드 실행을 허용하는 중요한 결함 인 Snakeyaml의 CVE-2022-1471 취약점을 다룹니다. Snakeyaml 1.33 이상으로 Spring Boot 응용 프로그램을 업그레이드하는 방법에 대해 자세히 설명합니다.

빙산 : 데이터 호수 테이블의 미래빙산 : 데이터 호수 테이블의 미래Mar 07, 2025 pm 06:31 PM

대규모 분석 데이터 세트를위한 오픈 테이블 형식 인 Iceberg는 데이터 호수 성능 및 확장 성을 향상시킵니다. 내부 메타 데이터 관리를 통한 Parquet/Orc의 한계를 해결하여 효율적인 스키마 진화, 시간 여행, 동시 W를 가능하게합니다.

Java에서 기능 프로그래밍 기술을 어떻게 구현할 수 있습니까?Java에서 기능 프로그래밍 기술을 어떻게 구현할 수 있습니까?Mar 11, 2025 pm 05:51 PM

이 기사는 Lambda 표현식, 스트림 API, 메소드 참조 및 선택 사항을 사용하여 기능 프로그래밍을 Java에 통합합니다. 간결함과 불변성을 통한 개선 된 코드 가독성 및 유지 관리 가능성과 같은 이점을 강조합니다.

고급 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 또는 Gradle을 어떻게 사용합니까?고급 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 또는 Gradle을 어떻게 사용합니까?Mar 17, 2025 pm 05:46 PM

이 기사에서는 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 및 Gradle을 사용하여 접근 방식과 최적화 전략을 비교합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

SublimeText3 영어 버전

SublimeText3 영어 버전

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