了解常用类及它们的常用方法
main方法
首先从我们最熟悉的的main方法开始
也就是public static void main(String[] args){ }
我们都知道main方法是程序的入口
当运行时JVM会自动去调用main方法
JVM调用main方法是识别"main"这个名字所以名字不能改
mian方法中还有一个字符串数组的参数args
在运行前可以给main的这个参数传入值
传入参数每个元素以空格形式隔开
控制台方式:
eclipse方式:
class test{
public static void main(String[] args) {
for (String i : args) {
System.out.println(i);
}
System.out.print(args.length);
}
}
传入: a b c
结果:
a
b
c
3
Scanner类
Scanner来自java.util
主要用来获取键盘输入的类
import java.util.Scanner;
// 试例常用方法
class test{
Scanner scan = new Scanner(System.in);
public static void main(String[] args){
int a = scan.nextInt();
double b = scan.nextDouble();
String c = scan.nextLine();
}
}
System类
System类属于java.lang包下的不用导包
我们经常使用的就有System.out.println()
out实际上是它的一个静态字段并且是一个引用类型(PrintStream),println()就PrintStream类的一个方法。
看看System的常用方法
方法1:arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
把一个数组从指定位置开始复制指定个数到另一个数组的指定位置
import java.util.Arrays;// 导入Arrays用来打印数组
class Season{
public static void main(String[] args) {
int[] arr = { 4, 6, 3, 8, 2};
String[] test = new String[10];
System.arraycopy(arr, 1, test, 2, 3);// (源数组,复制起始的位置,目的数组,粘贴的起始位置,复制的个数)
System.out.println(Arrays.toString(test));
}
}
方法二:currentTimeMillis() 返回从1970年到当下的时间长度单位毫秒
class Season{
public static void main(String[] args) {
Long a = System.currentTimeMillis();
System.out.println(a);
}
}
结果是很长的一段数
方法三:exit(int status) 关闭当前运行的虚拟机
class Season{
public static void main(String[] args) {
System.exit(0);// 传入一个整形参数一般设0
System.out.println("没有关闭");
}
}
结果:虚拟机关闭执行不出下面的打印语句
方法四:gc() 直接运行垃圾回收器
class Season{
@Override
protected void finalize() throws Throwable {// 当本类有对象被回收就会调用此方法
// TODO Auto-generated method stub
super.finalize();
System.out.println("有对象被回收");
}
public static void main(String[] args) {
new Season();// 创建两个没有被指向的对象(垃圾)
new Season();
System.gc();// 清除内存中的垃圾
}
}
结果:
有对象被回收
有对象被回收
Math类
Math类来自java.lang不用导包直接用
它里面都是有关数学的方法
有两个静态常量字段E和PI(自然对数的基数和圆周率)
试例常用的几个方法
方法一:max(,),min(,)比较两个数的大小返回
class Season{
public static void main(String[] args) {
int a=4;
int b=5;
int min = Math.min(a,b);
int max = Math.max(a,b);
System.out.println(min);
System.out.println(max);
}
}
结果:
4
5
方法二:sqrt( 数) 开平方根
class Season{
public static void main(String[] args) {
int a = 4;
int b = 9;
System.out.println(Math.sqrt(a));
System.out.println(Math.sqrt(b));
}
}
结果:
2
3
方法三:random() 返回[0,1)之间的随机数
class Season{
// 实际上Math里面用的random(),是调用了Random类中的方法具体参考文档
public static void main(String[] args) {
System.out.println(Math.random()*10);
System.out.println((int)(Math.random()*10));
}
}
结果:
3.083286699601188
7
BigDeciaml类
属于java.math包中,用于精度更高的计算,还有大整数BigInteger详情见文档
import java.math.BigDecimal;
/*
ROUND_UNNECESSARY不舍
ROUND_DOWN直接舍,ROUND_UP直接舍后最后一位进一
ROUND_CELLING正入负舍,ROUND_FLOOR负入正舍
ROUND_HALF_UP四舍五入,ROUND_HALF_DOWN五舍六入,ROUND_HALF_EVEN四舍六入五看奇数
*/
class Season{
public static void main(String[] args) {
BigDecimal a = new BigDecimal("0.3");
BigDecimal b = new BigDecimal("0.4");
System.out.println(a.subtract(b));// 减
System.out.println(b.divide(a,4,BigDecimal.ROUND_DOWN));// 除
System.out.println(a.add(b));// 加
System.out.println(a.multiply(b));// 乘
}
}
结果:
-0.1
1.3333
0.7
0.12
String类
不可变字符串String
可变字符串StringBuilder,StringBuffer
字符串类实际上是用字符类型数组value在存储
class Season{
// 不可变字符串String试例
public static void main(String[] args) {
String str1 = "bacbad";// 字符串字面量在方法区寻找有就指向没有就创建一个
String str2 = new String("bacbad");//在堆中新建对象,对象属性即字符串字面量在方法区寻找如果有对象去指向,没有就在方法区新建
System.out.println(str1.length());// 字符串长度
System.out.println(str1.charAt(2)); // 指定元素
System.out.println(str1.indexOf("ba"));// 返回指定字符串第一次出现的角标
System.out.println(str1.lastIndexOf("ba"));// 返回指定字符串最后一次出现的角标
System.out.println(str1.toLowerCase());// 字符串转小写
System.out.println(str1.toUpperCase());// 字符串转大写
System.out.println(str1.equals(str2));// String类中重写了此方法变成比较个value各元素来,而不是只是比较地址
System.out.println(str1.equalsIgnoreCase("abaCbaD"));// 忽略大小写比较两字符串是否相等
System.out.println(Arrays.toString(str1.split("a")));// 去除指定的字符把原字符串分成几部分成为一个字符串数组
System.out.println(str1.startsWith("c"));// 反会指定字符串是否该字符串的开头
System.out.println(str1.substring(3));// 从指定角标截取出字符串
System.out.println(str1.substring(3,5));// 截取指定段返回字符串
System.out.println(str1.trim());// 去除前后空格
System.out.println(str1.replace("a","c"));// 把该字符串的指定字符换成另一个指定字符
}
}
结果:
6
c
0
3
bacbad
BACBAD
true
false
[b, cb, d]
false
bad
ba
bacbad
bccbcd
class Season{
public static void main(String[] args) {
StringBuilder a = new StringBuilder("aarbg");
a.append("ss");// 在后添加
a.insert(3,"tt");// 指定插入
a.deleteCharAt(1);// 指定删除
System.out.println(a);
System.out.println(a.reverse);// 字符串反转
}
}
结果:
arttbgss
ssgbttra
日期相关类
Date类
来自java.util包
得到日期时间可以精确到毫秒
import java.util.Date;
class Season{
public static void main(String[] args) {
Date date = new Date();
System.out.println(date);
System.out.println(date.toLocaleString());// 转化为本地时间格式,Date中已弃用
}
}
结果:
Mon Jul 08 12:56:53 CST 2019
2019-7-8 12:56:53
DateFormat类
来自java.text包
import java.text.DateFormat;
import java.util.Date;
class Season{
public static void main(String[] args) {
Date date = new Date();
DateFormat a = DateFormat.getDateInstance();// 得到格式器,只获得日期填参数选择风格不填默认SHORT
DateFormat b = DateFormat.getTimeInstance();// SHORT风格,选取时间的格式器
DateFormat c = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.SHORT);// 选取时间+日期,日期LONG时间SHORT风格的格式器
System.out.println(a.format(date));// 格式器来格式日期,返回字符串
System.out.println(b.format(date));
System.out.println(c.format(date));
}
}
结果:
2019-7-8
13:49:51
2019年7月8日 下午1:49
SimpleDateFormat类
DateFormat的子类也是来自java.text
import java.text.SimpleDateFormat;
import java.util.Date;
class Season{
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat a = new SimpleDateFormat();
d.applyPattern("yyyy-MM-dd hh:mm");// y表示年,M表示月,d表示日用它们来自定义日期显示
System.out.println(d.format(date));
}
}
结果:
2019-07-08 01:59
结尾
通过集中式的查找编写,增加了常用的类和方法的熟悉感
java|算法|随笔