java基础类库学习

Scanner类

Scanner类是获取键盘输入,他的构造器还可以接收文件、输入流、字符串作为数据源。
Scanner主要提供了两个方法来扫描输入。
1、hasNextXxx():是否有下一个输入项,该方法是一个阻塞方法,会一直等待键盘输入的数 据,该方法还判断是否有下一个输入项,返回值是boolean类型的值;因此它会一直放回true。
2、nextXxx();获取下一个输入项。
还有一个方法:useDelimiter(String str)该方法可以把一个转义字符作为分割符。
Scanner还提供了两个方法来读取一行
boolean hasNextLine();返回源中是否还有下一行。
String nextLine();返回输入的源中的下一行字符串。

系统相关的类:System

System类代表当前java程序的运行平台。
System类中访问环境变量和系统属性。
如下代码:

public class SystemTest
{
	public static void main(String[]args)
	{

		Map<String, String> env = System.getenv();//获取系统所有的环境变量。以key-value键值对保存。
		for(String name : env.keySet())
		{
			System.out.println(name + "------>" + env.get(name));
		}
		System.out.println(System.getenv("JAVA_HOME"));//获取指定环境变量的值。
		Properties prop = System.getProperties();
	}
}

System类还可以获取当前系统的时间:currentTimeMillis(),返回的是long型整数。
System的in,err,out,分别代表了键盘输入,错误输出,和标准输出。并提供**setIn(),setErr(),setOut()**方法来改变系统的标准输入,错误输出流和标准输出流。

System类还提供了一个方法:identityHashCode(Object obj),该方法返回指定对象的精确hashCode值,也就是根据对象的地址计算得到的hashCode值。

接下来是Runtime类和Java9的ProcessHandle这个类。
Runtime类代表Java程序运行时环境。
Runtime类有几个方法,
Runtime runtime = Runtime.getRuntime();该方法可以获取java关联的运行时对象。
Runtime类还有一个功能----他可以直接单独启动一个进程来运行操作系统的命令。
如下:

public class RuntimeTest 
{
	public static void main(String[]args) throws Throwable
	{
//		Runtime rt = Runtime.getRuntime();
//		System.out.println("处理器的数量: " + rt.availableProcessors());
//		System.out.println("空闲内存数: " + rt.freeMemory());
//		System.out.println("总内存数: " + rt.totalMemory());
//		System.out.println("可用最大内存数: " + rt.maxMemory());
		
		Runtime rt = Runtime.getRuntime();
		rt.exec("C:\\Windows\\write.exe");//单独打开一个进程,打开系统write这个软件。
	}
}

Object类

该类是所有类的子类,如果一个类没有显示继承指定父类,则会默认继承Object类。所以任何对象都可以调用Object的方法。object有几个常见的方法,如下:
boolean equals(Object obj):判断一个对象和另一个对象是否为一个对象,判断的依据是根据 HashCode的地址值来判断的,所以如果重新改方法时最好也重写HashCode的方法。
Class<?> getClass():返回该对象的运行时类。
int HashCode():返回对象的hashCode值。
String toString():返回改对象的描述信息,一般都重现改方法,返回自己对象的详细信息。

clone方法:
克隆调用该方法的对象。
实现自我克隆需要以下几个步骤:
1,自定义类需要实现Cloneable接口,该接口只是一个标记性接口,没有定义任何方法
2,自定义实现自己的clone()方法。
3,实现clone()方法时通过super.clone();
关于克隆后的对象需要注意的是:

class Address
{
	String detaile;
	public Address(String detaile)
	{
		this.detaile = detaile;
	}
}

class User implements Cloneable
{
	int age;
	Address address;
	public User(int age)
	{
		this.age = age;
		address = new Address("广州天河");
	}
	public User Clone() throws Exception
	{
		return (User)super.clone();
	}
}

public class ObjectTest 
{
	public static void main(String[]args) throws Exception
	{
		User us = new User(29);
		User us1 = us.Clone();//对象克隆后返回的对象是原有对象的副本。
		System.out.println(us.equals(us1));//所以这里输出false;
		System.out.println(us.address == us1.address);
//需要注意的是如果克隆对象有实例变量是引用类型,Clone方法只是简单的复制了引用变量而已,其实实例对象还是一个。
	}
}

例如:Person p = new Person();
Person p1 = p;
这种形式只是拷贝了引用变量而已它们都指向同一个实例对象。
用Clone方法是真正意义上的对象克隆。
当一个克隆对象中有一个引用类型的变量时,那么就要对那一个引用类型的变量进行克隆。如果要实现深度克隆那就要自己进行递归克隆。

Objects工具类的用法:
Objects.requireNonNull()该方法主要来对方法形参进行输入校验。
public Foo(Bar bar, Baz baz)
{
this.bar = Objects.requireNonNull(bar, “bar must not be null”);
this.baz = Objects.requireNonNull(baz, “baz must not be null”);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值