• JAVA笔记:Java常用类库


    这篇文章我们来总结下Java中的常用类库。类库中的这些类和方法都是精心设计的,其运行的效率高、质量高,这些类和方法几乎包含在所有的Java软件中,所以可移植性很高。

    下面我们详细学习下。


    StringBuffer类

    StringBuffer是使用缓冲区的,本身也是操作字符串的,但是与String类不同,String类中的内容一旦确定之后不能改变,改变的只是它内存地址的指向,而StringBuffer类中的内容是可以改变的。
    对于StringBuffer而言,它本身是一个具体的操作类,所以它不能和String一样直接赋值,必须通过构造方法完成。

    StringBuffer常用方法:append();  用于字符串连接,效果等于String中的+;
    insert():在指定位置为字符串添加字符;
    reverse():对字符串进行反转操作;
    replace();替换掉指定位置的字符内容;
    substring();截取字符串指定内容;
    delete();删除指定字符串;
    indexOf(); 查找指定内容是否存在;

    实例:
    public class StringBuffer01 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		StringBuffer buffer = new StringBuffer();
    		buffer.append("hello");
    		buffer.append("nhpop12345656");//串联字符串
    		System.out.println(buffer);		
    		buffer.insert(2, "***");		//插入
    		System.out.println(buffer);
    		buffer.replace(7, 9, "AAA");	//替换
    		System.out.println(buffer);
    		String str1 = buffer.substring(7,12);//截取
    		System.out.println(str1);
    		StringBuffer str2 = buffer.reverse();//倒置
    		System.out.println(str2);
    		System.out.println(buffer);
    		buffer.delete(5, 7);				//删除
    		System.out.println(buffer);
    		if (buffer.indexOf("pop") == -1) { //查找
    			System.out.println("不可以找到");
    		} else {
    			System.out.println("可以找到");
    		}
    	}
    
    }
    

    Runtime类

    Runtime是一个封装了JVM进程的类,每一个Java程序都是启动了一个JVM进程,每一个JVM进程都是对应一个Runtime实例,此实例是JVM为其实例化的。
    Runtime定义中没有构造方法,本类的构造方法被私有化了。

    Runtime类实例:
    public class Runtime01 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Runtime run = Runtime.getRuntime();
    		System.out.println("JVM最大内存量:" + run.maxMemory());
    		System.out.println("JVM运行内存量:" + run.freeMemory());
    		String str = "sss";
    		for (int i = 0; i < 1000; i++) {
    			str += i;
    		}
    		System.out.println("运行后JVM内存量:" + run.freeMemory());
    		System.gc();
    		System.out.println("启动垃圾回收器之后的JVM内存" + run.freeMemory());
    
    	}
    
    }


    Runtime与Process
    使用Runtime可以直接调用本机应用程序。
    实例:调用应用程序记事本,并且在5秒之后关掉
    public class Runtime01 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Runtime run = Runtime.getRuntime();
    		Process p = null;
    		try {
    			p = run.exec("notepad.exe");
    		} catch (Exception e) {
    			e.printStackTrace();
    			// TODO: handle exception
    		}
    		try {
    			Thread.sleep(5000); // 此线程存活5秒
    		} catch (Exception e) {
    
    			// TODO: handle exception
    		}
    		p.destroy();
    
    	}
    
    }

    System类

    System类是一些与系统相关的方法和属性集合。
    实例:使用System类打印运行时间:
    public class System01 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		long startTime = System.currentTimeMillis();
    		int sum = 0;
    		for (int i = 0; i < 30000000; i++) {
    			sum += i;
    		}
    		long endTime = System.currentTimeMillis();
    		System.out.println("TotalTime:"+(endTime-startTime));
    	}
    
    }

    System类还可以显示出本机全部系统属性:
    public class System01 {
    
    	public static void main(String[] args) {
    		System.getProperties().list(System.out);
    	}
    
    }

    日期操作类(Date,Calendar)

    Date类直接输出实例化对象即可。
    import java.util.Date ;
    public class DateDemo01{
    	public static void main(String args[]){
    		Date date = new Date() ;	// 直接实例化Date对象
    		System.out.println("当前日期为:" + date) ;
    	}
    };
    Calendar类则可以将时间精确到毫秒。
    import java.util.* ;
    public class DateDemo02{
    	public static void main(String args[]){
    		Calendar calendar = new GregorianCalendar();	// 实例化Calendar类对象
    		System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
    		System.out.println("MONTH: " + (calendar.get(Calendar.MONTH) + 1));
    		System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
    		System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
    		System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
    		System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
    		System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
    	}
    };

    Math与Random类

    Math类中的方法都是静态方法,所以只要直接类名.方法即可使用。
    Math中常用的方法有:max、min、sqrt(开方)、pow(m,n)m的n次方、round(省略小数点后数字)。
    Random类主要是生成随机数,可以生成指定大小范围的随机数。
    Random random = new Random();
    		for(int i = 0;i<10;i++){
    			System.out.print(random.nextInt(50)+"	");
    		}


    大数操作(BigInteger、BigDecimal)

    对于大数操作,Java提供了两个类,其中BigInteger可以对大的整形数进行操作。
    实例:
    import java.math.BigInteger ;
    public class BigIntegerDemo01{
    	public static void main(String args[]){
    		BigInteger bi1 = new BigInteger("123456789") ;	// 声明BigInteger对象
    		BigInteger bi2 = new BigInteger("987654321") ;	// 声明BigInteger对象
    		System.out.println("加法操作:" + bi2.add(bi1)) ;	// 加法操作
    		System.out.println("减法操作:" + bi2.subtract(bi1)) ;	// 减法操作
    		System.out.println("乘法操作:" + bi2.multiply(bi1)) ;	// 乘法操作
    		System.out.println("除法操作:" + bi2.divide(bi1)) ;	// 除法操作
    		System.out.println("最大数:" + bi2.max(bi1)) ;	 // 求出最大数
    		System.out.println("最小数:" + bi2.min(bi1)) ;	 // 求出最小数
    		BigInteger result[] = bi2.divideAndRemainder(bi1) ;	// 求出余数的除法操作
    		System.out.println("商是:" + result[0] + 
    			";余数是:" + result[1]) ;
    	}
    };

    BigInteger类可以对大数进行小数操作,从而可以进行精确的四舍五入。

    比较器(Comparable、Comparator)

    比较器的类只要适用于数字之间进行比较。

    例:实现二叉树算法。
    class BinaryTree{
    	class Node{			// 声明一个节点类
    		private Comparable data ;	// 保存具体的内容
    		private Node left ;			// 保存左子树
    		private Node right ;		// 保存右子树
    		public Node(Comparable data){
    			this.data = data ;
    		}
    		public void addNode(Node newNode){
    			// 确定是放在左子树还是右子树
    			if(newNode.data.compareTo(this.data)<0){	// 内容小,放在左子树
    				if(this.left==null){
    					this.left = newNode ;	// 直接将新的节点设置成左子树
    				}else{
    					this.left.addNode(newNode) ;	// 继续向下判断
    				}
    			}
    			if(newNode.data.compareTo(this.data)>=0){	// 放在右子树
    				if(this.right==null){
    					this.right = newNode ;	// 没有右子树则将此节点设置成右子树
    				}else{
    					this.right.addNode(newNode) ;	// 继续向下判断
    				}
    			}
    		}
    		public void printNode(){	// 输出的时候采用中序遍历
    			if(this.left!=null){
    				this.left.printNode() ;	// 输出左子树
    			}
    			System.out.print(this.data + "	") ;
    			if(this.right!=null){
    				this.right.printNode() ;
    			}
    		}
    	};
    	private Node root ;		// 根元素
    	public void add(Comparable data){	// 加入元素
    		Node newNode = new Node(data) ;	// 定义新的节点
    		if(root==null){	// 没有根节点
    			root = newNode ;	// 第一个元素作为根节点
    		}else{
    			root.addNode(newNode) ; // 确定是放在左子树还是放在右子树
    		}
    	}
    	public void print(){
    		this.root.printNode() ;	// 通过根节点输出
    	}
    };
    public class ComparableDemo03{
    	public static void main(String args[]){
    		BinaryTree bt = new BinaryTree() ;
    		bt.add(8) ;
    		bt.add(3) ;
    		bt.add(3) ;
    		bt.add(10) ;
    		bt.add(9) ;
    		bt.add(1) ;
    		bt.add(5) ;
    		bt.add(5) ;
    		System.out.println("排序之后的结果:") ;
    		bt.print() ;
    	}
    };


    此外常用类库还有观察者模式所用的Observable类、支持正则表达式的类库、定时调度类Timer,以后会在使用到的时候进行总结。


  • 相关阅读:
    Mysql存储引擎
    数据库事务的四大特性以及事务的隔离级别
    万万没想到,面试中,连 ClassLoader类加载器 也能问出这么多问题
    万万没想到,JVM内存区域的面试题也可以问的这么难?
    SQL Server读取及导入Excel数据
    SQL Server加密与解密
    线程之间如何通信
    mybatis 批量更新 批量添加
    vue echarts 从后台获取数据形成饼图,柱状图,折线图
    vue 视频播放
  • 原文地址:https://www.cnblogs.com/tryitboy/p/4231118.html
Copyright © 2020-2023  润新知