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类(字符串类)
后期更新补充

浙公网安备 33010602011771号