一。类
1.接触过的类:
System: java.lang.System
Scanner: java.util.Scanner
Math: java.lang.Math
String: java.lang.String
Arrays: java.util.Arrays
程序中,默认import的软件包就是 java.lang
软件包package:
java.lang: 常用类
java.util: 工具类
java.io: 输入输出相关类
java.sql: 数据库相关
java.net: 网络相关
java.text: 格式化相关
2。常用类
①Random: 构造方法 new Random()
int nextInt(): 产生一个随机整数
int nextInt(int n): 产生一个0~n的随机数
比较Math.random() 和 Random 的使用
1.Math.random() -> 不需要对象,直接调用
Random -> 需要对象
2.Math.random() -> 返回double, 范围固定0~1
Random中的nextInt() -> 返回int, 范围可指定
Random uu=new Random();//创建Random对象
int h=uu.nextInt();//使用方法
int m=uu.nextInt(20);// 0~20之间随机数
boolean a=uu.nextBoolean();// 产生一个随机boolean值
②String - 字符串 -
字符数组直接打印, 就是字符串 -> JVM转换的
字符串特点:
1.直接赋值的字符串, 都存在字符串常量池中, 优化
2.字符串本身不可变
3.字符串不能用 == 来比较
1.构造方法
String s = “hello”;
String()
String(String)
String(char[])
String(char[], int offset, int count)
String(byte[])
String(byte[], int offset, int length)
String s="hello";
String m="hello";
char c=s.charAt(0);//获得字符串s中下标为0的字符
String ff=m.trim();//去除字符串m两边的空白字符
boolean q=m.equals(s);//比较字符串s和m是否相等
char[] pp=s.toCharArray();//将字符串转换为字符数组
System.out.println(Arrays.toString(pp));//字符数组的打印
int i=s.length();//获得字符串的长度
boolean l=s.startsWith("he");//判断字符是否以啥啥啥开头
boolean u=s.endsWith("lo");//判断是否以啥啥啥结尾;
int index=s.indexOf("h");//获得字符串中首次出现此字母的下标位置
String z=m.substring(0,4);//截取字符串0到3的字符
String z1=s.substring(3);//从指定位置截取到结尾
boolean k=s.equalsIgnoreCase("heLLo");//忽略大小写比较
String s="helolo";
String m="helolo";
char c=s.charAt(0);//获得字符串s中下标为0的字符
boolean q=m.equals(s);//比较字符串s和m是否相等
boolean q1=s.equalsIgnoreCase("heLoLo");//忽略大小写比较字符串是否相等
char[] pp=s.toCharArray();//将字符串转换为字符数组
System.out.println(Arrays.toString(pp));//字符数组的打印
int i=s.length();//获得字符串的长度
boolean l=s.startsWith("he");//判断字符是否以啥啥啥开头
boolean t=s.startsWith("lo",3);//判断是否以lo开头,开始位置是下标3
boolean u=s.endsWith("lo");//判断是否以啥啥啥结尾;
int index=s.indexOf("h");//获得字符串中首次出现此字母的下标位置
int index1=s.indexOf("h",2);//获得字符串中从2下标志位置开始的h的下标
String z=m.substring(0,4);//截取字符串0到3的字符
String z1=m.substring(4);//截取字符串下标4开始的字符
③.Scanner
Scanner console = new Scanner(System.in);
④System
//用time=System.currentTimeMillis();来计算程序运行效率
long time=System.currentTimeMillis();//获得系统当前时间单位毫秒
for(int i=0;i<=10000000;i++){
}
long time1=System.currentTimeMillis();
System.out.println(time1-time);
/*
给数组a扩容并且将原来的内容复制进去
*/
int [] a={10,2,3,5,9};
int[] b=new int[a.length+1];
b[b.length-1]=13;
System.arraycopy(a,0,b,0,a.length);
/*
arrycopy(原数组,开始复制的下标,扩容后的数组,
开始复制的下标,要复制的长度)
*/
a=b;
System.out.println(Arrays.toString(a));
⑤Arrays
int [] a={1,5,2,9,3};
int[] b=new int[a.length+1];
//给数组a扩容到length+1,并且将a里的值重新赋值给扩容后的a
a=Arrays.copyOf(a,a.length+1);
a[a.length-1]=9;//给扩容后的a扩容的那个下标赋值内容
System.out.println(Arrays.toString(a));
Arrays.sort(a);//将数组a里的值排序并且重新覆盖a;
System.out.println(Arrays.toString(a));
三。二维数组
int [] [] a=new int[4][];//长度为4的数组
a[0]=new int[5];//给数组初始化
a[1]=new int[3];
a[2]=new int[6];
a[2][5]=3;//给数组第三行第6个元素赋值
int[][]b=new int[3][4]; //3行4列
b[1][3]=5;
for(int i=0;i<b.length;i++){
for(int j=0;j<b[i].length;j++){
b[i][j]=5;
System.out.print(b[i][j]+"\t");
}
System.out.println();
四。Static
1.静态代码块,静态成员方法,静态成员变量
public class Child {
String name;
int age;
static int money=100;//定义静态成员变量通常声明同时初始化;
static {//静态代码块是给类初始化,在类加载时执行
money=1000;
System.out.println("静态代码块执行");
}
{ /*
* 此处为代码块,放在构造方法之前,也是给对象初始化,
* 提取所有构造器中重复代码,但通常用不到
*/
}
Child(String name,int age){
this.name=name;
this.age=age;
}
static void Cry(){ //定义静态方法
System.out.println("拽着"+money+"使劲哭"); //静态方法中不可以调用成员变量和成员方法
}
void Sleep(String name){
Cry();
System.out.println(name+"睡着了");
}
}
public class FoolChilden {
static {
//此处为静态代码块,用于先执行消耗较大的代码
System.out.println("加载一些图片");
}
public static void main(String[] ags){
Child c1=new Child("方思迪",22);
Child c2=new Child("胡",22);
System.out.println(c1.name+Child.money+"零花钱被没收然后");
c1.Sleep(c1.name);
}
}
2.类加载
第一次使用类会加载, 并且只加载一次
使用类的情况:
创建对象
调用类的静态成员变量
调用类的静态方法
类加载 会执行的代码:
1.静态代码块
2.静态成员变量