首页 > 编程语言 >自学Java第15Day

自学Java第15Day

时间:2024-07-23 23:27:50浏览次数:13  
标签:Java int System 15Day println 自学 public Math out

学习目标:面向对象进阶


学习内容:常用API


学习时间: 3 点-下午 6 点


学习产出:

1.Math

方法名说明
public static int abs(int a)获取参数绝对值
public static double ceil(double a)向上取整
public static double floor(double a)向下取整
public static int  round(float a)四舍五入
public static int max(int a,int b)获取两个int值中的较大值
public static double pow(double a,double b)返回a的b次幂的值
public static double random()返回值为double的随机值,范围[p.0,1.0)
public class math11 {
    public static void main(String[] args) {

        //abs 获取参数绝对值
        System.out.println(Math.abs(88));//88
        System.out.println(Math.abs(-88));//88
        //bug:
        //以int类型为例,取值范围 :- 2147483648
        //如果没有正数与负数对应,那么传递负数结果有误
        //-2147483648 没有正数与之对应,所以abs结果产生bug
        //System.out.println(Math.abs(-2147483647)) ;//2147483647
        //System.out.println(Math.absExact(-2147483648));

        System.out.println(Math.ceil(12.34));//13.0
        System.out.println(Math.ceil(12.54));//13.0
        System.out.println(Math.ceil(-12.34));//-12.0
        System.out.println(Math.ceil(-12.54));//-12.0

        System.out.println(Math.floor(12.34));//12.0
        System.out.println(Math.floor(12.54));//12.0
        System.out.println(Math.floor(-12.34));//-13.0
        System.out.println(Math.floor(-12.54));//-13.0

        // 四舍五入
        System.out.println(Math.round(12.34));//12
        System.out.println(Math.round(12.54));//13
        System.out.println(Math.round(-12.34));//-12
        System.out.println(Math.round(-12.54));//-13

        // 获取两个整数的较大值
        System.out.println(Math.max(20, 30));//30
        // 获取两个整数的较小值
        System.out.println(Math.min(20, 30));//20
        //获取a的b次幂
        System.out.println(Math.pow(2, 3));//8
        //细节:
        //如果第二个参数 0~1之间的小数
        System.out.println(Math.pow(4,0.5));//2.0
        System.out.println(Math.pow(2,-2));//0.25
        
        //建议:
        //第二个参数:一般传递大于等于1的正整数。
        System.out.println(Math.sqrt(4));//2.0
        System.out.println(Math.cbrt(8));//2.0

        for (int i = 0; i < 10; i++) {
            System.out.println(Math.floor(Math.random() * 100) + 1);
            //Math.random() [0.0 1.0)
            //*100          [0.0 100.0)
            //floor         去掉了后面的小数
            //+1            [1 100.0]
        }
    }
}

 练习:算法水题一

        判断一个数是否为一个质数

public class math {
    public static void main(String[] args) {
        System.out.println(isPrime(997));

    }
    public static boolean isPrime(int number){
        for (int i = 2; i <Math.sqrt(number) ; i++) {
            if(number%i==0){
                return false;
            }
        }
        return true;
    }
}

 练习:算法水题二

        自幂数,一个n位自然数等于自身各个数位上数字的n次幂之和。

        举例1:三位数    1^3 + 5^3 + 3^3 = 153

        举例2:四位数    1^4 + 6^4 + 3^4 + 4^3 = 1634

                如果自幂数是一位数,也叫做:独身数

                三位自幂数:水仙花数            四位自幂数:四叶玫瑰数

                五位自幂数:五角星数            六位自幂数:六合数

                七位自幂数:北斗七星数         八位自幂数:八仙数

                九位自幂数:九九重阳数         十位自幂数:十全十美数

        要求:统计一共有多少个水仙花数。

public class math2 {
    public static void main(String[] args) throws IOException {
        int count=0;
        for (int i = 100; i <=999 ; i++) {
            int ge=i%10;
            int shi=i/10%10;
            int bai=i/100;
            double sum=Math.pow(ge,3)+Math.pow(shi,3)+Math.pow(bai,3);
            if(sum==i){
                count++;
            }
        }
        System.out.println(count);
        System.out.println(Runtime.getRuntime().availableProcessors());
        System.out.println(Runtime.getRuntime().freeMemory()/1024/1024);
        Runtime.getRuntime().exec("shutdown -a");
    }
}

2.System

方法名说明
public static void exit(int status)终止当前运行的 Java 虚拟机
public static long currentTimeMillis()返回当前系统的时间毫秒值形式
public static void arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数)贝拷组数

计算机中的时间原点

1970年1月1日   00:00:00

 原因:
        1969年8月,贝尔实验室的程序员肯汤普逊利用妻儿离开一个月的机会。开始着手创造一个全新的革命性的操作系统。他使用B编译语言在老旧的PDP-7机器上开发出了Unix的一个版本。随后,汤普逊和同事丹尼斯里奇改进了B语言,开发出了C语言,重写了UNIX。

1970年1月1日算C语言的生日 

 拷贝数组练习:

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

        //拷贝数组
        int[] arr1 = {1,2,3,4,5,6,7,8,9,10};
        int[] arr2 = new int[10];
//把arr1数组中的数据拷贝到arr2中
//参数一:数据源,要拷贝的数据从哪个数组而来
//参数二:从数据源数组中的第几个索引开始拷贝
//参数三:目的地,我要把数据拷贝到哪个数组中
//参数四:目的地数组的索引。
//参数五:拷贝的个数
//System.arraycopy(arr1,0, arr2, 0,5);

//arr2 : 0 0 0 0 1 2 3 0 0
        System.arraycopy(arr1, 0, arr2,  4, 3);

//验证
        for (int i = 0; i < arr2.length; i++) {
            System.out.print(arr2[i] + "");
        }
    }
}

运行结果:

0000123000

 

public class math11 {
    public static void main(String[] args) {
        //public static void arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数)
        //细节:
        //1.如果数据源数组和目的地数组都是基本数据类型,那么两者的类型必须保持一致,否则会报错
        //2.在拷贝的时候需要考虑数组的长度,如果超出范围也会报错
        //3.如果数据源数组和目的地数组都是引用数据类型,那么子类类型可以赋值给父类类型

        //数组拷贝

        Student s1 = new Student("zhangsan",  23);
        Student s2 = new Student( "lisi",  24);
        Student s3 = new Student("wangwu", 25);

        Student[] arr1 = {s1, s2, s3};
        Person[] arr2 = new Person[3];
        //把arr1中对象的地址值赋值给arr2中
        System.arraycopy(arr1, 0, arr2, 0, 3);

        //遍历数组arr2
        for (int i = 0; i < arr2. length; i++){
            Student stu = (Student) arr2[i];
            System.out.println(stu.getName() + ", "+ stu.getAge());

        }
    }
}

运行结果:

zhangsan, 23
lisi, 24
wangwu, 25

Runtime

方法名说明
public static     Runtime getRuntime()当前系统的运行环境对象
public void     exit(int status)停止虚拟机
public int     availableProcessors()获得CPU的线程数
public long     maxMemory ()JVM能从系统中获取总内存大小(单位byte)
public long     totalMemory()JVM已经从系统中获取总内存大小(单位byte)
public long     freeMemory ()JVM剩余内存大小(单位byte)
public Process exec(String command)运行cmd命令
public class math11 {
    public static void main(String[] args) throws IOException {
        //1.获取Runtime的对象
        Runtime r1 = Runtime.getRuntime();

        //2.exit 停止虚拟机
        Runtime.getRuntime().exit(0);

        //3.获得CPU的线程数
        System.out.println(Runtime.getRuntime().availableProcessors());//8

        //4.总内存大小,单位byte字节
        System.out.println(Runtime.getRuntime().maxMemory() / 1024 / 1024);//4064

        //5.已经获取的总内存大小,单位byte字节
        System.out.println(Runtime.getRuntime().totalMemory() / 1024 / 1024);//254

        //6.剩余内存大小
        System.out.println(Runtime.getRuntime().freeMemory() / 1024 / 1024);//251

        //7.运行cmd命令
        //shutdown:关机
        //加上参数才能执行
        //-s:默认在1分钟之后关机
        //-s -t 指定时间:指定关机时间
        //-a:取消关机操作
        //-r: 关机并重启
        Runtime.getRuntime().exec(  "shutdown -s -t 3600");
    }
}

标签:Java,int,System,15Day,println,自学,public,Math,out
From: https://blog.csdn.net/Directionboy/article/details/140647769

相关文章

  • 小白快速入门量化交易的自学路径
    今年已然过去一半了,年初立的flag都实现了吗?据我多年来的观察,很多小白萌新开始学习量化,特别是年初的时候立下“宏图大志”,但有相当一部分最终没能"上岸",从入门到放弃,从然后到没有然后,并不是因为他们不够聪明或不够努力,原因有很多,我觉得大部分只是方向或方法没对。特别是对于......
  • Java设计模式-单例模式
    Java常用设计模式-单例模式JavaDesignPatterns:创建型模式:工厂方法、抽象方法、建造者、原型、单例结构型模式有:适配器、桥接、组合、装饰器、外观、享元、代理行为型模式有:责任链、命令、解释器、迭代器、中介、备忘录、观察者、状态、策略、模板方法、访问者常用设计模式:......
  • 深入理解Java虚拟机:JVM高级特性与最佳实践-第三章-垃圾收集器与内存分配策略
    在java内存运行时区域中的各个部分中,程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭,因此这几个区域的内存分配和回收都具备确定性,在这几个区域内就不需要过多考虑如何回收的问题,当方法结束或者线程结束时,内存自然就跟随着回收了。但是Java堆和方法区这两个区域具有......
  • 面试题-Java 容器
    List和Set的区别是什么?Vector,ArrayList,LinkedList区别?ArrayList和LinkedList底层是怎么实现的?各自的特点是什么?HashSet和HashMap和的区别?TreeMap和TreeSet区别和实现原理HashMap,Hashtable的区别?HashMap,LinkedHashMap,TreeMap的区别?HashMap,和ConncurrentHashMap......
  • 41-50题矩阵和字符串 在Java中,将大写字符转换为小写字符的方法主要有以下几种:
    20240723一、数组最后几个和字符串的两个448.找到所有数组中消失的数字(和645.错误的集合差不多)283.移动零118.杨辉三角119.杨辉三角II661.图片平滑器(没看懂)598.区间加法II566.重塑矩阵303.区域和检索-数组不可变520.检测大写字母125.验证回文串二、在Jav......
  • JavaSE异常、今日面试题,解决git合并失败的终极篇!!!若以框架报错Invalid bound statement
    20240723一、JavaSE异常二、今日面试题三、解决git无法合并推送问题(终极篇!!!)1.直接把你写的复制出来,然后输入git命令1.1.解决办法一:保留本地的更改,中止合并->重新合并->重新拉取1.2解决办法二:舍弃本地代码,远端版本覆盖本地版本(慎重)2.然后复制回来,然后再合并推......
  • 《Java初阶数据结构》----3.<线性表---LinkedList与链表>
    目录前言一、链表的简介1.1链表的概念1.2链表的八种结构 重点掌握两种1.3单链表的常见方法三、单链表的模拟实现四、LinkedList的模拟实现(双链表)4.1 什么是LinkedList4.2LinkedList的使用五、ArrayList和LinkedList的区别 前言   大家好,我目前在学习......
  • 黑马pink JavaScript学习笔记_Web APIs Day2
    事件监听(绑定)什么是事件?事件是系统内发生的动作或者发生的事情。比如:用户点击页面上的一个按钮。什么是事件监听?就是让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出响应,也称为注册事件比如:鼠标经过的时候,弹出一个alert“鼠标经过了~”语法元素对象.addEven......
  • 大规模Java应用程序的性能调优策略
    大规模Java应用程序的性能调优策略大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨大规模Java应用程序的性能调优策略。随着应用程序的规模增大,性能瓶颈可能会显现出来,因此对性能的优化是保证应用系统高效运行的关键。一、JVM参数调优......
  • Java并发编程的高级技术与最佳实践
    Java并发编程的高级技术与最佳实践大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来深入探讨Java并发编程的高级技术与最佳实践。并发编程是Java开发中的一项重要技能,它能够充分利用多核处理器的优势,提高应用程序的性能和响应能力。本文将从高级......