Java的数据类型01

Java数据类型(基本类型)

点击查看源网页

Java属于强语言类型要求变量的使用要严格符合规定,所有变量都必须先定义后使用

Java数据类型(对象类型)

对象类型分为:内置对象类型、自定义对象类型(我们写的任何一个类都可以认为是一个Java类型)
对于初学者来说我们常用的内置对象类型有

Math类

Java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这样的工具 类,其所有方法均为静态方法,并且不会创建对象,调用起来非常简单。

package com.JavaSE.day02.mathandrandnumber;
/**
 * description: Mathdemo <br>
 * Math:内置对象类型,用来进行数学运算的工具类
 * date: 2022/3/4 9:39 AM <br>
 * author: zoumaoji <br>
 * version: 1.0 <br>
 */
public class Mathdemo {
    public static void main(String[] args) {
        //获取圆周率
        double pi = Math.PI;
        System.out.println("圆周率为" + pi);

        //绝对值
        int abs = Math.abs(-8);
        System.out.println("绝对值为" + abs);

        //最大值最小值
        int max = Math.max(2, 8);
        System.out.println("最大值为" + max);
        int min = Math.min(2, 8);
        System.out.println("最小值" + min);
        //默认max和min方法只能比较两个参数,如何比较多个参数:嵌套
        int result = Math.max(Math.max(10, 8), 20);
        System.out.println(result);

        //平方根
        double sqrt = Math.sqrt(9);
        System.out.println(sqrt);

        //幂运算
        double pow = Math.pow(2,5);
        System.out.println(pow);

        //向下取整--返回小于或者等于当前值的最大整数
        double floor =Math.floor(3.9);
        System.out.println(floor);

        //向上取整--返回大于或者等于当前值的最小整数
        double ceil =Math.ceil(3.1);
        System.out.println(ceil);

        //四舍五入
        long round = Math.round(3.5);
        System.out.println(round);

        //随机数
        /** 默认产生[0,1)的随机浮点数,最小可以等于0,最大不会等于1。
         * 更多扩展看 randnumber
         */
        double random =Math.random();
        System.out.println(random);

    }
}

Math类中对于随机数Math.random( )方法,进行扩展使用如下:

random类
package com.JavaSE.day02.mathandrandnumber;
import java.util.Random;
/**
 * description: randnumber <br>
 * Java产生随机数的方式
 * 1.Math.random
 * 2.使用java.uitl.random类产生随机数
 * date: 2022/3/4 10:34 AM <br>
 * author: zoumaoji <br>
 * version: 1.0 <br>
 */
public class randnumber {
    public static void main(String[] args) {
        //创建随机数对象
        Random random = new Random();
        //产生随机数
        //random.nextInt();产生int范围内的随机数
        int i =random.nextInt();
        System.out.println(i);
        //产生[0.0,1.0]的随机浮点数
        double d=random.nextDouble();
        System.out.println(d);

        // 如何产生指定范围内的随机数,产生[50-100]
        //方法一,不要api用内置类 强转
        int randnumber = (int) (Math.random()*51+50);
        System.out.println(randnumber);
        //方法二:用api,不用强转
        /**
         * 现在需要解决的问题是要在[0, r - l]之间产生随机数,等价于在[0, r - l + 1)之间产生随机数
         * nextInt(r - l + 1) + l
         * 例如,你想在范围[5, 21]之间产生随机数,只需这样:netInt(21 - 5 + 1) + 5;
         */
        int i2=random.nextInt(51)+50;
        System.out.println(i2);
    }
}

Scanner类
package com.JavaSE.day01.scannerapply;
/**
 * 1.导入工具类
 * 注意:不同包下的两个类如果要导入,则需要import,特例:java.lang包下的所有内容不需要import
 * */
import java.util.Scanner;
/**
 * description: scammer <br>
 * java.util.Scanner类,用来获取用户键盘输入的工具类
 * date: 2022/3/3 4:48 PM <br>
 * author: zoumaoji <br>
 * version: 1.0 <br>
 */
public class scanner {
    public static void main(String[] args) {
        //2.创建Scanner对象(造一个键盘扫描器出来)
        Scanner scanner = new Scanner(System.in);
        //3.使用Scanner对象
        System.out.println("请输入你的内容");
        //4.获取键盘输入的整数
        //nextline nextDouble根据自己的需求来写 输入内容如果和方法不匹配,则程序运行报错
        int number = scanner.nextInt();
        System.out.println("你输入的内容是" + number);
        //关闭对象,释放资源
        scanner.close();
    }
}
Date类

Jdk中关于日期时间的相关操作类主要有两部分,一部分是java.util下面的和java.util.Date相关的类,另一部分是Jdk8提供的java.time下面的相关类。由于java.util.Date相关类存在很多缺陷,包括: 诸多设计缺陷simpleDateFormat 线程不安全等等。所以在操作时间、日期时强烈建议大家使用jdk8提供的相关类, 在jdk8中可以使用Instant代替Calendar,LocalDateTime代替Date,DateTimeFormatter代替SimpleDateFormat,相比于之前的类,jdk8提供的相关类简单高效线程安全。日历的信息更多比如说时区,日历就是用来代替日期的,date: 属于日期类(已经淘汰)。

缺点:
1.Date名字存在误导,严格来讲它表达的是一个时刻的概念,类似于jdk8中的Instant。
2.它不是final类,导致java.sql.Date类继承于它,并且由于和java.sql.Date 类的名称相同,及其容易混淆。
3.它是可变类,可以通过setTime()这个方法进行赋值。但是时间日期时自然值,应该是不可变的值。
4.很多地方隐含的使用了系统默认时区进行转化,比如tostring()方法,它会默认将它转化为系统默认时区。
5.月份从0开始编码,这会导致很多错误。
6.年份从1990年开始编码。输出的是差值
7.SimpleDateFormat线程不安全。当多个线程同时操作的时候,有可能报错。

public class OldDate {
    public static void main(String[] args) {
        //获取当前系统时间
        Date date = new Date();
        System.out.println(date);
        //date.setTime()可以设置时间

        /**自定义日期样式(格式化)
         * y年份,M月份,d日期,H24小时,h12小时,m分钟,s秒,E显示中文星期x
         * 注意:必须使用规定的字符,否则运算错误
         * 1.创建格式化日期格式
         * 2.把日期传入格式化对象中进行格式化
         */
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");
        String format = simpleDateFormat.format(date);
        System.out.println(format);

        //已经过时的功能是不推荐使用的,但是功能是有效的!
        //获取日期相关信息
        //已经过时的方法,不推荐使用
        int year =date.getYear();
        //注意:结果需要加上1900,他的起始日期是1900,输出的是和当前年的差值(缺点)
        System.out.println(year);

        //0-11范围,一月是0
        int month = date.getMonth();
        System.out.println(month);

        int day = date.getDay();
        System.out.println(day);
    }
}
Calendar类
package com.JavaSE.day02.olddate;

import java.util.Calendar;

/**
 * description: Calendardate <br>
 * jdk1.1
 * java.uitil.Calender 日历类 用来增强Date(Date+Calendar都是老日期 日历)
 * date: 2022/3/4 1:34 PM <br>
 * author: zoumaoji <br>
 * version: 1.0 <br>
 */
public class Calendardate {
    public static void main(String[] args) {
        //创建当前系统日历从1970-1-1开始计算的  优点:有时区的概念
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar);


        //获取其他时间
        //calendar.set(2002,12-1,12,12,12,12);

        //从日历中获取相关信息
        int year = calendar.get(Calendar.YEAR);
        System.out.println("今年是" + year);

        //月份0-11的对应:注意+1 和-1 输出1-12对应的月份
        int month = calendar.get(Calendar.MONTH) + 1;
        System.out.println("现在第" + month + "月");

        int day = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println("现在第" + day + "号");

        int hour12 = calendar.get(Calendar.HOUR);
        int hour24 = calendar.get(Calendar.HOUR_OF_DAY);
        System.out.println("12小时制" + hour12 + "点");
        System.out.println("24小时制" + hour24 + "点");

        int min = calendar.get(Calendar.MINUTE);
        System.out.println(min + "分");

        int sec = calendar.get(Calendar.SECOND);
        System.out.println(sec + "秒");

        //注意:绝大多数国家一周的第一天是星期日 注意+1 和 -1输出正确的第一天是星期一
        int week = calendar.get(Calendar.DAY_OF_WEEK);
        System.out.println("星期" + week);

        System.out.println("----------------");



    }
}
LocalDate类(新版日期/日历)
package com.JavaSE.day02.newdate;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.Month;
import java.time.format.DateTimeFormatter;

/**
 * description: Newdate <br>
 * jdk8.0提供的全新日期(localDate)
 * 新版日期区别于老版日期的特性
 * 日期换算:老版日期需要转换成毫米数,然后进行计算,新版日期可以直接在日期的上面进行计算
 * date: 2022/3/4 2:12 PM <br>
 * author: zoumaoji <br>
 * version: 1.0 <br>
 */
public class Newdate {
    public static void main(String[] args) {
        //当前时间
        //年月日date,当前日期
        LocalDate date = LocalDate.now();
        System.out.println(date);
        //时分秒time,当前时间
        LocalTime time = LocalTime.now();
        System.out.println(time);
        //年月日+时+分+秒datetime,当前日期时间
        LocalDateTime dateTime = LocalDateTime.now();
        System.out.println(dateTime);
        System.out.println("--------------------------");
        //格式化时间
        String formatDate = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        System.out.println(formatDate);

        //把字符串转换成日期对象
        //注意:如果模版符合yyyy-MM-dd HH:mm:ss,则可以直接转换,否则运行错误,当然我们也可以自己指定转换的模版
        //LocalDate birthday =LocalDate.parse(str,DateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")););
        String str = "2000-02-05";
        LocalDate birthday = LocalDate.parse(str);
        System.out.println(birthday);

        //获取其他时间
        LocalDateTime newdate = LocalDateTime.of(2022, 3, 4, 12, 12, 12);
        System.out.println(newdate);

        //获取年
        int year = dateTime.getYear();
        System.out.println(year);

        //获取月份对象,其中math中还有很多的值
        Month month = dateTime.getMonth();
        System.out.println(month);
        //要以数字显示的话:
        int month1 = dateTime.getMonthValue();
        System.out.println(month1);
      /**计算(加减)
	     plus()/minus()
		   date.plus(10, ChronoUnit.YEARS)
		   date.minus(10, ChronoUnit.MONTHS)
	     plusYears/plusMonths/plusDays
	     minusYears/minusMonths/minusDays
       判断
	     isBefore()/isAfter() 判断日期谁前谁后
	     isLeapYear() 判断是否是润年*/
    }
}
String类(字符串类)

后期更新补充

posted @ 2022-03-13 16:52  JanoCode  阅读(61)  评论(0)    收藏  举报