zoukankan      html  css  js  c++  java
  • Java入门(六)之常用的类

    Java入门之常用的类

    我们在使用Java的时候,有很多时候需要用到一些Java自带的类库,学会怎么使用,了解其提供的功能对我们开发很有帮助。

    1. Math类

    /*
    	Java 的 Math 包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。
    	Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用。	
    	static 是Java的一个关键字,可以用在方法名和属性名上面,表示静态。
    	静态的方法和属性即使在没有创建类的情况下也可以调用。
    	一般的属性调用是:new Example().num;
    	而静态的属性可以这样调用:Example.num;
    */
    		System.out.println("90 度的正弦值:" + Math.sin(Math.PI/2));  
            System.out.println("0度的余弦值:" + Math.cos(0));  
            System.out.println("60度的正切值:" + Math.tan(Math.PI/3));  
            System.out.println("1的反正切值: " + Math.atan(1));  
            System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI/2));  
            System.out.println(Math.PI);  
    
    /*
    	random() 方法用于返回一个随机数,随机数范围为 0.0 =< Math.random < 1.0。 
    	我们可以使用这个方法做一个抽奖
    */
    	int num = (int)Math.random()*100;//获取一个0-100的随机整数
    	int num2 = (int)Math.random()*100+200;//获取一个100-200的随机整数
    
    /*
    	Math类还有许多的用法,基本的数学运算都有,如果本文没有提及,可以自行百度,资料非常多。
    */
    

    2. Number类

    • 我们在使用数字时,会使用byte,int,double,float等基本数据类型。但是我们无法像操作类一样去操作他们,而String是一个对象,我们可以操作String,调用它的一些方法。那么,这些基本数据类型能不能做到像String一样调用一些实用的方法呢。

    • 当然是有的,Java 语言为每一个内置数据类型提供了对应的包装类。

      所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类 Number 的子类。

      /*
      	首先,包装类可以像基本数据类型一样定义,一样运算。
      */
      	 Integer x = 5;
           x =  x + 10;
           System.out.println(x);
      /*
      	我们也可以进行一些转换操作。
      */
      	String str = "10";
      	int num = Integer.parseInt(str);
      	num = num + 10;
      	System.out.println(num);
              
      

    3. String类

    /*
    	String类比较特殊的是,可以通过"内容"来创建对象。
    	因为它是字符串,所以我们也可以定义一个字符数组,然后传入它的构造方法。
    */
    	char[] helloArray = { 'h', 'e', 'l', 'l', 'o'};
        String helloString = new String(helloArray);  
        System.out.println( helloString );
    	//获得字符长度
    	System.out.println( helloString.length());
    	//链接两个字符
    	helloString.concat(" world!");
    	//切割字符串
    	String longstr = "小明 小红 小绿 小白";
    	String [] names = longstr.split(" ");
    //以上用法只是部分,还有很多的方法可以使用,当你需要一些功能的时候,不如百度一下是不是有相关的方法可以直接使用。
    /*
    	格式化字符。
    	跟printf一样,String可以格式化字符
    */
    	String fs;
    	fs = String.format("浮点型变量的值为 " +
                       "%f, 整型变量的值为 " +
                       " %d, 字符串变量的值为 " +
                       " %s", floatVar, intVar, stringVar);
    

    4. StringBuffer 和 StringBuilder

    /*
    	String字符串在拼接、替换等修改操作时,都是需要先新建一个String对象,替换到之前的对象。
    	而当我们需要复杂的修改时,使用String会影响我们的运行速度。
    	这时我们可以使用StringBuffer 和StringBuilder 来代替。
    	和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。 
        StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。 
        由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。 
    */
    	StringBuilder sb = new StringBuilder("hello");
    	sb.append(" ").append("world").append("!");
    	System.out.println(sb);
    

    5. 数组

    数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。

    Java 语言中提供的数组是用来存储固定大小的同类型元素。

    /*
    	首选方法
    */
    	数据类型[] 变量名;
    /*
    	也可以这样写
    */
    	数据类型 变量名[];
    /*
    	实例:
    */
    	int[] array;
    /*
    	创建数组对象
    */
    	array = new int[10];
    /*
    	也可以这样
    */
    	array = {1,2,3};
    /*
    	为数组赋值
    */
    	array[1] = 1;
    /*
    	多维数组
    */
    	double[][] rect = new double[3][4];
    
    

    6. Arrays类

    Arrays类可以用来操作数组对象,它的方法都是静态的。

    /*
    	为数组赋值,使用fill方法可以为数组对象的所有元素赋上同一个值
    */
    	Arrays.fill(数组对象,值);
    /*
    	sort方法可以为数组排序,顺序是升序
    */
    	Arrays.sort(数组对象);
    /*
    	二分查找,使用前需要先排序
    	如果查找成功会返回索引,如果查找失败返回-1
    */
    	Arrays.binarySearch(数组对象,搜索的元素);
    /*
    	比较,两个数组对象如果内容相同,并且顺序相同,那么就认为这两个数组是相同的。
    */
    	Arrays.equals(数组对象1,数组对象2)
    

    7. 日期时间

    1. Date类

    /*
    	创建日期时间对象
    */
    	new Date();
    //时间戳转日期时间
    	new Date(时间戳);
    /*
    	默认的打印结果:
    	Thu Jan 16 16:11:34 CST 2020
    */
    /*
    	比较时间有三种方法
    	使用 getTime() 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。
    	使用方法 before(),after() 和 equals()。例如,一个月的12号比18号早,则 :
    	new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
    	使用 compareTo() 方法,它是由 Comparable 接口定义的,Date 类实现了这个接口。
    */
    
    

    2. SimpleDateFormat

    /*
    	使用SimpleDateFormat可以格式化日期
    */
    	Date now = new Date( );
        SimpleDateFormat sf = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
     
        System.out.println("当前时间为: " + sf.format(now));
    /*
    	可以字符串转为时间
    */
    	String time_str = "2020-01-16 16:16:16";
    	Date date = sf.parse(time_str);
    	System.out.println("字符串转化为时间: " + date);
    
    

    8. Scanner类

    我们可以使用这个类来获取用户的输入。

    //定义
    Scanner scan = new Scanner(System.in);
    //接收键盘输入
    System.out.print("请输入:");
    String next = scan.next();//输入字符串
    String next_int = scan.nextInt();//输入数字
    ...
    

    练习:

    使用本章知识,制作一个简易的课表。功能有:

    1. 查看本周课表,并可以选择上一周,下一周。
    2. 课表内容包括 课程名称,上课时间,第几周,星期几
    3. 输入时间查看当天课程。
  • 相关阅读:
    hdoj:2075
    hdoj:2072
    hdoj:2071
    hdoj:2070
    hdoj:2069
    test001
    hdoj:2067
    hdoj:2061
    hdoj:2058
    hdoj:2057
  • 原文地址:https://www.cnblogs.com/Jennyism/p/javaSE-06.html
Copyright © 2011-2022 走看看