目录
一、工具类
目的:熟悉jdk的API
1,scanner类:获取键盘输入
首先创建对象:Scanner sc = new Scanner(System.in);
(1)接收int类型:sc.nextInt();
(2)接收字符串类型:sc.next();
建议:一般直接使用next();接收字符串。
字符串类型转换为int、double型数据方法:
直接使用,不需要创建对象:Integer.parseInt(String); Double.parseDouble();
(3)nextLine(); nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。
获取字符串常用next()方法
next()方法定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,
next()方法会自动将其去掉并且在接受到有效字符之后,再输入空格后面输入的有效字符已经无法接受 输出不出来了。
2.Random类(获取随机数)
首先创建对象 Random random = new Random();
(1)nextDouble():获取[0,1)之间的随机小数
(2)nextInt(bound):获取[0,bound)之间的随机整数
注意:如果想要获得[n,m]之间的随机整数,就相当于0到m-n+1的整数再 加上n
nextInt(m-n+1)+n;
(3)打印字母:ASCII码表中A-Z [65,90],a-z [97,122]。
public static void main(String[] args) {
Random random = new Random();
//打印小写字母
char a = (char)(random.nextInt(26) + 97);
System.out.println(a);
//打印大写字母
char b = (char)((random.nextInt(26) + 65));
System.out.println(b);
}
打印int 和 char型的时候,将变量 和 + 号隔开输出,不然int和char用 + 直接连接时会自动将char型转成ASII 值进行运算。
如:
public static void main(String[] args) {
Random random = new Random();
int a = random.nextInt(10);
int b = random.nextInt(10);
char c = (char)((random.nextInt(26) + 65));
char d = (char)(random.nextInt(26) + 97);
System.out.print(a);
System.out.print(b);
System.out.print(c);
System.out.println(d)
;System.out.println(a + "" + b + "" + "" + c + "" + d);
}
只有在字符串中 + 才能是连接符
关于+运算符与==运算符的优先级
public class Test {
public static void main(String[] args) {
String s1 = "runoob";
String s2 = "runoob";
System.out.println("s1 == s2 is:" + s1 == s2);
}
}
输出结果:输出结果为 false。
因为在 Java 中 + 操作法的优先级大于 ==,所以输出部分表达式等于 “s1 == s2 is:runoob” == “runoob”(直接使用==判断的是对象的地址),该表达式计算结果为 false。
1.格式化输出时间格式
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat df=new SimpleDateFormat("yyyy年MM月dd日 E hh点mm分ss秒 a");
String time=df.format(date);
System.out.println(time);
}
步骤: (1)创建Date的对象
(2)创建SimpleDateFormat对象 ,调用SimpleDateFormat的有参构造方法(SimpleDateFormat是继承DateFormat抽象类) (3)设定想要输出时间的格式
(4)使用SimpleDateFormat对象调用它的format方法(返回值是String类型),参数类型为Date的对象
(5)打印format方法的结果
对SimpleDateFormat构造方法中时间输出格式的解释:
G-----------公元 sss---------xxx(毫秒)
yyyy--------xxxx(年) yy年----19年 MM-------xx(月) dd---------xx日 E-------星期几x
hh------xx(点 ) :输出的是十二小时的方式 如:下午的是05点 kk-------xx(点):输出的是24小时的方式 如:下午的是17点 mm--------xx(分) ss----------xx(秒) a----------x午
注意:带有括号的字系统不会打印,需要自己手动输入
2.输出当前时间(获得当前时间方法一:使用Date类)
直接打印Date对象就好。如:System.out.println(date);
输出格式为:周几+几月+几号+时间+中央时间+年份
public static void main(String[] args) {
Date date = new Date();
System.out.println(date);
}
//输出:
Tue Jul 30 17:16:42 CST 2019
3.方法:
(1) getTime(); 输出的是1970年1月1号00:00:00到目前的毫秒数
long time = date.getTime();
System.out.println(time);
//输出结果:
1564478579268
(2)获得明天现在这个时刻的时间:
public static void main(String[] args) {
Date date = new Date();
long time = date.getTime();
date.setTime(time + 24*60*60*1000);
System.out.println(date);
}
//输出结果:
Wed Jul 31 17:28:19 CST 2019
步骤:
1.创建Date类的对象date
2.调用getTime()方法,返回值为long类型,值为1970年1月1号00:00:00到目前的毫秒数
3.调用setTime()方法,参数为:这个毫秒数加上想要几天的毫秒数(小时数*60*60*1000)----不需要赋值给变量
4.打印date
4.SimpleDateFormat类:
简单的日期格式化(获得当前时间方法二:使用SimpleDateFormat格式化输出时间)
对日期进行格式化的输出。在java.text包中继承与DateFormat类 格式化(日期---->文本)和解析日期(文本---->日期)
1.format(格式化):日期----->文本 date-----String 把时间date对象转化为字符串形式
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 hh点mm分ss秒");
String str = simpleDateFormat.format(date);
System.out.println(str);
}
2.parse(解析): 文本-------->日期 String-----date 把字符串形式转换为date
public static void main(String[] args) throws ParseException {
String string = "2019-7-2"; //格式不要错
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = simpleDateFormat.parse(string);
System.out.println(date);
}
//输出结果:
Tue Jul 02 00:00:00 CST 2019
5.Calendar类(获得时间):日历,抽象类(获得当前时间方法三)
Calender的月份是从0开始的,但日期和年份是从1开始的
https://www.cnblogs.com/sunseine/p/4493892.html
子类针对不同国家的日历系统。世界上使用最广泛的:GregorianCalendar:阳历
获取当前时刻yyyy-MM-dd HH:mm:ss: Calendar calendar = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 设置日期格式 String now = sdf.format(calendar.getTime()); System.out.println(now);
封装日历信息
可以使用静态方法:类名调用
1.获得当前时间(通过getInstance()方法获得对象,再调用getTime()方法获得时间):
public static void main(String[] args) {
//1.通过类名.getInstance()获得一个Calendar对象
Calendar canlendar = Calendar.getInstance();
//2.使用对象调用getTime()方法获得时间
canlendar.getTime();
System.out.println(canlendar.getTime());
}
2.获得当前时间(创建Calendar类的子类GregorianCalendar对象,在通过对象调用getTime()方法
public static void main(String[] args) {
GregorianCalendar gre = new GregorianCalendar();
System.out.println(gre.getTime());
}
3.设置明天的时间,使用set(filed value)方法
public static void main(String[] args) {
//1.通过类名.getInstance()获得一个Calendar对象
Calendar calendar = Calendar.getInstance();
//设置年份
calendar.set(Calendar.YEAR, 2019);
//设置月份,在计算机中,一月是0,所以这里的calendar.JULY也可以写成6
calendar.set(Calendar.MONTH, calendar.JULY);
//设置日
calendar.set(Calendar.DATE, 31);//如果写32,输出时就会自动显示八月一号
System.out.println(calendar.getTime());
}
//输出结果:
Wed Jul 31 18:35:47 CST 2019
4.获得calendar类对象信息
Calendar c1 = Calendar.getInstance();
// 获得年份
int year = c1.get(Calendar.YEAR);
// 获得月份
int month = c1.get(Calendar.MONTH) + 1;
// 获得日期
int date = c1.get(Calendar.DATE);
// 获得小时
int hour = c1.get(Calendar.HOUR_OF_DAY);
// 获得分钟
int minute = c1.get(Calendar.MINUTE);
// 获得秒
int second = c1.get(Calendar.SECOND);
// 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
int day = c1.get(Calendar.DAY_OF_WEEK);
6.LocalDateTime(获得当前时间方法四)
LocalDateTime currentTime = LocalDateTime.now();
System.out.println("当前时间: " + currentTime);
7.Math类(数学运算类)
https://www.cnblogs.com/whiteme/p/7234243.html
8.Arrays类(操作数组)
注意以下的方法都是static的方法,直接使用类名调用即可
1 toString
2 copyOfRange
3 copyOf
4 fill
5 sort
6 binarySearch
7 equals
8 copyOf/copyOfRange
9 Sytem.arrayCopy
9..object类
顶级父类 基类 base class
创建一个类默认继承object类,当然object类中有的方法,将来任何类中都可以继承过去 比如:equals,toString,clone
10..System 类
System.out 输出语句(标准的输出)
System.in Scanner 创建对象时,作用:等待被录入(标准的输入)
System.err 标准的错误信息的输出(默认加红色) 称为标准的是因为都在控制台输出
System.in.read() 录入键盘输入int型,自动转换成录入的ASII码值
System.currentTimeMillis();从1970年一月一号到目前的毫秒数
System.exit(非0) 让java虚拟机强制退出运行状态
System.gc(); 手动的让系统执行垃圾回收器(回收无用的内存),java有自动的垃圾回收机 制,但是自动的回收机制不会立马回收,有观察期
二、包装类
包装类:基本数据类型对应的引用类型 目的:见到认识
基本数据类型:1.数值类型:小数和整数(float int) 2.字符类型:char
由编译器特别支持的包装称为装箱,所以当内置数据类型(int,double)被当作对象(Integer,Double)使用的时候,编译器会把内置类型装箱为包装类。
相似的,当对象(Integer,Double)被当作内置数据类型使用的时候编译器也可以把一个对象拆箱为内置类型(int,double)
如:
public class Test{
public static void main(String args[]){
Integer x = 5;
x = x + 10;
System.out.println(x);
}
}
输出结果:15
当 x 被赋为整型值时,由于x是一个对象,所以编译器要对x进行装箱。然后,为了使x能进行加运算,所以要对x进行拆箱。
1.Number类(数值类型)
数值类型对应到java类中的Number类
int(基本数据类型)----------Integer(包装类)
如: 由int age = 18;----->Integer age = 18;只是类型不同
同样的double-----Double long-----Long float-------Float 首字母大写的数据类型要知道是包装类
2.Character类(字符类型)
字符类型对应到java类中的Character类
3.字符串转数字
String a = "111"; 1.int numb = Integer.parseInt(a);
2.int numb = Integer.valueOf(a);