JAVA基础再回首(十二)——Character类、Math类、Random类、System类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m366917/article/details/52214231

JAVA基础再回首(十二)——Character类、Math类、Random类、System类

版权声明:转载必须注明本文转自程序员杜鹏程的博客:http://blog.csdn.net/m366917


今天写完了博客,来和大家聊一个话题

最可怕的是,那些富二代比你还努力啊

这样的人,我相信在你的身边肯定存在着,那么,富二代为什么要这么拼?
如果一般人失败了,可能就周围几个人看笑话;而富二代如果失败了,看他笑话的,能排几条街。
有些富二代赚钱的原因更单纯:穷。
我们觉得他们是富二代,在他们的圈子里,未必如此。
就像我们眼里的有钱人,在王思聪眼里,还是个穷逼。
而王思聪在马克扎克伯格、比尔盖茨这些全球超级富豪眼里,也是穷逼啊。
既然穷就要努力奋斗。

好吧,就算他们不认为自己穷,比如“国民爸比”马云的儿子马元峰,算是中国最顶级的富二代了吧?据说在杭州读书的时候就是学霸,现在在伯克莱大学读书,据周围人爆料,评价他是四个字:低调、勤奋。

  • 自怨自艾是世界上最傻逼最不酷的事了。
    你苦苦追求的上限,不过是人家的起点。
    那你先到上限再说啊!
    你觉得人家是富二代,你再怎么努力都超不过了?
    那你先把那些不是富二代的大多数超过了再说呀。
    你都不是富二代了,你都输在起跑线上了,所以你更要拼尽全力啊。
    正是因为没有爹可以拼,我们才要拼命啊。

有一段话,我很喜欢:人会长大三次。第一次是在发现自己不是世界中心的时候。第二次是在发现即使再怎么努力,终究还是有些事令人无能为力的时候。第三次是在,明知道有些事可能会无能为力,但还是会尽力争取的时候。

作为乌龟,我们可以去自己想去的地方。但是不要停止奔跑。

我们继续来学习Java的常用类

Character类

首先我们来了解它的概述及其构造方法

  • Character类概述
    • Character 类在对象中包装一个基本类型 char 的值,此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然
  • 构造方法
    • public Character(char value)
public class CharacterDemo {
    public static void main(String[] args) {
        // 创建对象
//       Character ch = new Character((char) 97);
        Character ch = new Character('a');
        System.out.println("ch:" + ch);
        //运行程序后可以发现:这两个对象的结果是相同的
    }
}
  • Character类成员方法
    • public static boolean isUpperCase(char ch):判断给定的字符是否是大写字符
    • public static boolean isLowerCase(char ch):判断给定的字符是否是小写字符
    • public static boolean isDigit(char ch):判断给定的字符是否是数字字符
    • public static char toUpperCase(char ch):把给定的字符转换为大写字符
    • public static char toLowerCase(char ch):把给定的字符转换为小写字符

快上车,一起写个Demo,好让大家理解

public class CharacterDemo {
    public static void main(String[] args) {
        // public static boolean isUpperCase(char ch):判断给定的字符是否是大写字符
        System.out.println("isUpperCase:" + Character.isUpperCase('A'));
        System.out.println("isUpperCase:" + Character.isUpperCase('a'));
        System.out.println("isUpperCase:" + Character.isUpperCase('0'));

        // public static boolean isLowerCase(char ch):判断给定的字符是否是小写字符
        System.out.println("isLowerCase:" + Character.isLowerCase('A'));
        System.out.println("isLowerCase:" + Character.isLowerCase('a'));
        System.out.println("isLowerCase:" + Character.isLowerCase('0'));

        // public static boolean isDigit(char ch):判断给定的字符是否是数字字符
        System.out.println("isDigit:" + Character.isDigit('A'));
        System.out.println("isDigit:" + Character.isDigit('a'));
        System.out.println("isDigit:" + Character.isDigit('0'));

        // public static char toUpperCase(char ch):把给定的字符转换为大写字符
        System.out.println("toUpperCase:" + Character.toUpperCase('A'));
        System.out.println("toUpperCase:" + Character.toUpperCase('a'));

        // public static char toLowerCase(char ch):把给定的字符转换为小写字符
        System.out.println("toLowerCase:" + Character.toLowerCase('A'));
        System.out.println("toLowerCase:" + Character.toLowerCase('a'));
    }
}
//结果就不必多说了,很容易理解的。

我们来一起做一个Character类的综合练习吧!

//我们要做一个统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(比如"Adu123Messi"这个字符串)
public class CharacterTest {
    public static void main(String[] args) {
    //首先定义一个字符串
    String str = "Adu123Messi";
    //然后让我们定义三个统计变量
    int bigCount = 0;//大写字母
    int smallCount = 0;//小写字母
    int numberCount = 0;//数字
    // 把字符串转换为字符数组。
    char[] chs = str.toCharArray();

    // 遍历字符数组获取到每一个字符
    for (int x = 0; x < chs.length; x++) {
        char ch = chs[x];

        // 判断该字符
        if (Character.isUpperCase(ch)) {
            bigCount++;
        } else if (Character.isLowerCase(ch)) {
            smallCount++;
        } else if (Character.isDigit(ch)) {
            numberCount++;
        }
    }
    // 输出结果
    System.out.println("大写字母:" + bigCount + "个");
    System.out.println("小写字母:" + smallCount + "个");
    System.out.println("数字字符:" + numberCount + "个");
    }
}

输出结果:
大写字母:2个
小写字母:6个
数字字符:3个

Math类

  • Math类概述
    • Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
  • 成员变量
    • public static final double PI
    • public static final double E
  • 成员方法
    • public static int abs(int a):绝对值
    • public static double ceil(double a):向上取整
    • public static double floor(double a):向下取整
    • public static int max(int a,int b):最大值
    • public static double pow(double a,double b):a的b次幂
    • public static double random():随机数 [0.0,1.0)
    • public static int round(float a) 四舍五入
    • public static double sqrt(double a):正平方根

这么热的天,竟然停电了。我只能用电脑剩余的电量写了。希望一会我写完电能来。

public class MathDemo {
    public static void main(String[] args) {
        // public static final double PI
        System.out.println("PI:" + Math.PI);//PI:3.141592653589793
        // public static final double E
        System.out.println("E:" + Math.E);//E:2.718281828459045

        // public static int abs(int a):绝对值
        System.out.println("abs:" + Math.abs(10));
        System.out.println("abs:" + Math.abs(-10));

        // public static double ceil(double a):向上取整
        System.out.println("ceil:" + Math.ceil(12.34));//13.0
        System.out.println("ceil:" + Math.ceil(12.56));//13.0

        // public static double floor(double a):向下取整
        System.out.println("floor:" + Math.floor(12.34));//12.0
        System.out.println("floor:" + Math.floor(12.56));//12.0

        // public static int max(int a,int b):最大值
        System.out.println("max:" + Math.max(12, 23));//23
        // 获取三个数据中的最大值
        // 方法的嵌套调用
        System.out.println("max:" + Math.max(Math.max(12, 23), 18));
        // 获取四个数据中的最大值
        System.out.println("max:"+ Math.max(Math.max(12, 78), Math.max(34, 56)));

        // public static double pow(double a,double b):a的b次幂
        System.out.println("pow:" + Math.pow(2, 3));

        // public static double random():随机数 [0.0,1.0)
        System.out.println("random:" + Math.random());
        // 获取一个1-100之间的随机数
        System.out.println("random:" + ((int) (Math.random() * 100) + 1));

        // public static int round(float a) 四舍五入(参数为double的自学)
        System.out.println("round:" + Math.round(12.34f));//12
        System.out.println("round:" + Math.round(12.56f));//13

        //public static double sqrt(double a):正平方根
        System.out.println("sqrt:"+Math.sqrt(4));
    }
}

Random类

  • Random类概述
    • 此类用于产生随机数
    • 如果用相同的种子创建两个 Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。
  • 构造方法
    • public Random()
    • public Random(long seed)
  • 成员方法
  • public int nextInt():返回的是int范围内的随机数
  • public int nextInt(int n):返回的是[0,n)范围的内随机数
public class RandomDemo {
    public static void main(String[] args) {
        // 创建对象
         Random r = new Random();
        for (int x = 0; x < 10; x++) {
            // int num = r.nextInt();//返回的是int范围内的随机数
            int num = r.nextInt(100) + 1;//本来返回的是[0,100)范围的内随机数,+1后返回[1,100)
            System.out.println(num);
        }

        //创建对象,给出指定的种子
        Random r = new Random(123);
        for (int x = 0; x < 10; x++) {
            int num = r.nextInt(100) + 1;
            System.out.println(num);//给定种子后,每次得到的随机数是相同的。
        }
    }
}

System类

  • System类概述
    • System 类包含一些有用的类字段和方法。它不能被实例化。
  • 成员方法
    • public static void gc():运行垃圾回收器。
    • public static void exit(int status):终止当前正在运行的 Java 虚拟机。参数用作状态码;根据惯例,非 0 的状态码表示异常终止。
    • public static long currentTimeMillis():返回以毫秒为单位的当前时间
    • public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length):从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。

System.gc()可用于垃圾回收。
当使用System.gc()回收某个对象所占用的内存之前,通过要求程序调用适当的方法来清理资源。在没有明确指定资源清理的情况下,Java提高了默认机制来清理该对象的资源,就是调用Object类的finalize()方法。finalize()方法的作用是释放一个对象占用的内存空间时,会被JVM调用。而子类重写该方法,就可以清理对象占用的资源,该方法有没有链式调用,所以必须手动实现。
执行System.gc()前,系统会自动调用finalize()方法清除对象占有的资源,通过super.finalize()方式可以实现从下到上的finalize()方法的调用,即先释放自己的资源,再去释放父类的资源。
但是,不要在程序中频繁的调用垃圾回收,因为每一次执行垃圾回收,jvm都会强制启动垃圾回收器运行,这会耗费更多的系统资源,会与正常的Java程序运行争抢资源,只有在执行大量的对象的释放,才调用垃圾回收最好

public class SystemDemo {
    public static void main(String[] args) {
         System.out.println("1945年的今天");
         System.exit(0);
         System.out.println("日本宣布无条件投降");
    }
}
//运行结果可以看到控制台只打印了:1945年的今天
//因为System.exit(0);终止当前正在运行的 Java 虚拟机。

我们再来看System.currentTimeMillis();返回以毫秒为单位的当前时间

//单独使用这样目前对我们来说意义不大,所以我们可以统计下面这段程序的运行时间
long start = System.currentTimeMillis();
        for (int x = 0; x < 100000; x++) {
            System.out.println("hello" + x);
        }
        long end = System.currentTimeMillis();
        System.out.println("共耗时:" + (end - start) + "毫秒");

最后一个成员方法public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
我们先来说方法中的参数分别是什么意思
src——源数组
srcPos——原数组中的起始位置
dest——目标数组
destPos——目标数组中的起始位置
length——要复制的数组元素的数量
了解了参数,我们来一起联系一下

public class SystemDemo {
    public static void main(String[] args) {
        // 定义数组
        int[] arr = { 11, 22, 33, 44, 55 };
        int[] arr2 = { 6, 7, 8, 9, 10 };

        System.arraycopy(arr, 1, arr2, 2, 2);

        System.out.println(Arrays.toString(arr));
        System.out.println(Arrays.toString(arr2));
    }
}

输出结果:
这里写图片描述


今天的车就开到这里,让我们休息一下,来日再战。
欢迎有兴趣的同学加我朋友的QQ群:点击加群555974449
我在群里等你。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页