常用类
内部类
class Outer{
class Inner {
// 内部类也会形成一个 .class 文件
// 访问outer 里的private 的属性。
// 方法 +().....属性 自己定义
}
}яА
public static void main(String[] args) {
//Outer outer = new Outer();
//Outer.Inter inter = outer.new Inter();
//两步显麻烦,可以直接一步
Outer.Inter inter = new Outer().new Inter();
inter.show(); // 另一个 class 里的方法,不是自带的
}
System.out.println(Outer.this.name);
// 两个名字相同时 访问外部属性 要加 Outer.this.
System.out.println(name);
不能包含 private static 即静态的
但可以这样 private final static ,,,加一个常量
–关于静态static的–
public class StaticText {
private String name = "寒塘渡鹤影";
static class Inner{
private String name = "冷月葬侍魂";
public void show(){
// 关于static 实则是与外部类分开的, !!!!!!重要
//所以 应该重新new 一下
StaticText outer = new StaticText();
System.out.println(outer.name);
System.out.println(name); }
–局部内部类–
方法中的类,即class 前面不能加 private 等修饰符,但里面的内容可以
主代码
package InnerClass.inClass;public class StaticText {
private String name = "寒塘渡鹤影";
public void show(){
String name2 = "冷月葬侍魂";
class Inner{
private String name3 = "lindaiyu";
public void show2(){
System.out.println(StaticText.this.name);
}
} // 由于一个类,只执行一个方法,到局部内部类就不会再执行
//所以在外层中,把局部内部类实例化。即可。厉害!
Inner inner = new Inner();
inner.show2(); }}
测试代码
package InnerClass.inClass;public class Static {
public static void main(String[] args) {
StaticText outer = new StaticText();
outer.show(); 、、//变量的对象可能需要加final,防止消失
}
}
//局部内部类
//与接口interface 的搭配使用
public class UsbTest {
public static void main(String[] args) {
//局部内部类
//与接口interfa 的搭配使用
class ak implements Usb{ !!!!!!与接口相连
@Override
public void service() {
System.out.println("好风凭借力送我上青云");
} }
Usb / 或者叫ak ak = new ak(); //对象实例化
ak.service(); //Usb usb = new Mouse(); //usb.service(); }
匿名内部类 直接new 接口 接口,以前还不知道接口怎么样呢,}加;重写方法:alt+insert
Usb usb = new Usb(){
@Override
public void service() {
System.out.println("你好呀");
} };
usb.service();
Object类
Class class1 = s1.getClass();
Class class2 = s2.getClass();
if 看class 1 和class 2相等不相等
.hashCode(),看哈希码
toString()
System.out.println(b.toString());
//依本人见解,toString ,多在输入的text 文本转String里用
equial()
String a = "渭北春天树";
String b = "渭北春天树";
//String b = "江东日暮云";
System.out.println(a.hashCode());
System.out.println(b.hashCode());
System.out.println(a.equals(b)); // a 与 b 到内容相等则相同,且哈希值也相等。反之则不是返回false
//但如果是 new 出来 的 尽管内容一样 也不相等
– finalize –
垃圾回收
使用System.gc () .通知JVM进行垃圾回收
装箱 (把 栈 里的数据存到 堆 里,基本类型 (int a = 10;一开始在栈里) -》 引用类型) and 拆箱(堆 到 栈)
int age = 10;
Integer name = 111;
Integer integer = age;
int aaa = 111;
字符串转换
int n1 = 8;int n2 = 800;
//将int 类型转为字符串 String s1 = n1+"";
// 2: 用Interger函数
String s2 = Integer.toString(n1);
// 变为几进制的方式
String s3 = Integer.toString(n1,16);
System.out.println(s3);
System.out.println(""+n1+n2);
//"============================"
//把字符串转变为 int 型
//用 Integer.parseInt
String string = "666";
int num = Integer.parseInt(string);
System.out.println(num);
//=================
//关于 boolean 也可以转成基本类型
//只有“ture ”才转成 ture ,其他都是 false
String string2 = "ture";
boolean b1 = Boolean.parseBoolean(string2);
System.out.println(b1);
Integer 内存区
Integer integer1 = new Integer(200);
Integer integer2 = new Integer(200);
// 两者不相等,结果为错误
//Integer 为引用变量 ,存放在栈中 ,比较的是内存地址
//所以不一样
System.out.println(integer1==integer2);
Integer integer3 = 100;
Integer integer4 = 100;
System.out.println(integer3==integer4); //相等,在缓冲区内
//该段代码不相等 //因为Integer 里面的缓冲区是
-128 - 127之间;
//超出这个范围,就会用 new 来创建。变成不一样
Integer integer5 = 200;
Integer integer6 = 200;
System.out.println(integer5==integer6);
String
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xbgwWNLV-1636275871836)(C:\Users\74771\AppData\Roaming\Typora\typora-user-images\1632213302511.png)]
String name = "hello";
name = "zhangsan";
String name2 = "zhangsan";
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L3xvX61q-1636275871852)(C:\Users\74771\AppData\Roaming\Typora\typora-user-images\1632214123752.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6NoByEKM-1636275871859)(C:\Users\74771\AppData\Roaming\Typora\typora-user-images\1632214757080.png)]
String str = new String("java");
String str2 = new String("java"); //创建了两个,一个在堆里,一个在字符串池里,
//和其他一样,str,这个基本类型在 栈 里
System.out.println(str == str2);// == 比较的是地址不相等
System.out.println(str.equals(str2));// equals 比较的是内容,相等
length() charAt() contains()
String string = "java是世界上最好的语言";
//length() 长度
System.out.println(string.length());
//charAt() 返回某个位置的字符
System.out.println(string.charAt(string.length()-1));
//contains() 判断是否包含某个字符串,是则返回ture
System.out.println(string.contains("java"));
toCharArray() 返回字符串对应的数组
indexOf() 返回字符串第一次出现的位置
lastIndexOf() 返回字符串最后一次出现的位置
System.out.println(Arrays.toString(string.toCharArray()));
System.out.println(string.indexOf("java"));
System.out.println(string.indexOf("java",4));
System.out.println(string.lastIndexOf("java"));
trim() 去除字符串前后的空格
toUpperCase() toLowerCase() 将字符串大写变为小写或相反,大小写
endsWith() startsWith() 判断是否是以某个字符开始或者结尾
String sss = " hello,WOrld ";
System.out.println(sss.trim());
System.out.println(sss.toUpperCase());
System.out.println(sss.toLowerCase());
String yyy = "hello,java";
System.out.println(yyy.endsWith("java"));
System.out.println(yyy.startsWith("hello"));
replaca() 对字符串进行替换
split() 对字符串进行拆分
System.out.println(yyy.replace("hello","hi"));
String say = "java is the best language of ,prongram";
String[] arry = say.split("[] ,]+");//重要,[ ,]:表示空格或逗号,加号表示几个都可以
for(String x:arry)
System.out.println(x);
equals()比较内容,只有相等或者不相等两种结果,false or ture
equalsIgnoreCase() 忽略 大小写 进行比较
compareTo(): 比较大小
String s1 = "hello";
String s1 = "HELLO";
System.out.println(s1.equalsIgnoreCase(s2));//忽略大小写的比较
String s3 = "abc";
String s4 = "advsdg";
System.out.println(s3.compareTo(s4));// 前面不一样比较编码值,为 -23
String s3 = "abc";String s4 = "abcsdg"; //前面一样比较字符串长度 ,为 -3
System.out.println(s3.compareTo(s4));
把字符串的首字母,变为大写
public static void main(String[] args) {
String str = "this is text";
String[] array = str.split(" ");
for (String x :array)
System.out.println(x);
for(int i =0;i<array.length;i++){
char first = array[i].charAt(0); //把第一个字符转成大写
char upperfirst = Character.toUpperCase(first);
String news=upperfirst+array[i].substring(1);
//substring(1) 从第几个位置开始剪切字符串
System.out.println(news);
}
StringBuffer 与 StringBuilder(更高效)的使用
- append 添加
- insert(),插入
- replace()
- delete(0,str.length);删除
- reverse()反转
StringBuffer sb = new StringBuffer();
//append 添加
sb.append("java世界第一");
System.out.println(sb);
sb.append("java不错");
System.out.println(sb);
sb.append("java真香");
//insert(),插入
sb.insert(0,"我在最前面");
System.out.println(sb);
//replace()
sb.replace(0,5,"hello");
//delete();删除
sb.delete(0,5);
System.out.println(sb);}
可以测试电脑性能
long start = System.currentTimeMillis(); //时间函数
String string = "";
// 用StringBuffer 和 StringBuilder 时间会大大缩减
//这个电脑甚至会卡
for(int i=0;i<99999;i++) {
string += i;
}
long end = System.currentTimeMillis();
System.out.println("用时"+(end-start));
BigDecimal
可以代提double
double a=1.0;double b=0.9;
// double 运算中,会出现近似值
// 需要更高精度的运算,,
BigDecimalSystem.out.println(a+b);
double result = (0.4+0.5)/0.9;
System.out.println(result);
BigDecimal bd1 = new BigDecimal("1.0");
BigDecimal bd2 = new BigDecimal("0.9");
BigDecimal bd3 = bd1.multiply(bd2);
BigDecimal bd4 = bd1.add(bd2);
//BigDecimal bd5 = bd1.divide(bd2);
//四舍五入BigDecimal
r5 = bd1.divide(bd1,2,BigDecimal.ROUND_UP);System.out.println(r5);
Date
//今天
Date date1 = new Date();
System.out.println(date1);
System.out.println(date1.toLocaleString());
//昨天,今天减去毫秒数
Date date2 = new Date(date1.getTime()-(60*60*24*1000));
System.out.println(date2);
// 方法 after before
System.out.println(date1.after(date2));
System.out.println(date1.before(date2));
// 比较compareTo
System.out.println(date1.compareTo(date2));
// 比较是否相等 equals
System.out.println(date1.equals(date2));}
Calender
public static void main(String[] args) {
// 创建对象 因为该类 是 protected 类型所以这样用
Calendar calendar1 = new Calendar.getInstance(); System.out.println(calendar1.getTime().toLocaleString()); System.out.println(calendar1.getTimeInMillis());
// 获取时间信息
//年
int year = calendar1.get(Calendar.YEAR);
//月
int month = calendar1.get(Calendar.MONTH);
//日
int day = calendar1.get(Calendar.DAY_OF_MONTH);
//小时
int hour = calendar1.get(Calendar.HOUR);
//分钟
int minute = calendar1.get(Calendar.MINUTE);
//秒
int second = calendar1.get(Calendar.SECOND);
//修改时间
Calendar calender2 = Calendar.getInstance();
calender2.set(Calendar.DAY_OF_MONTH,5); System.out.println(calender2.getTime().toLocaleString());
//add 方法修改时间
calender2.add(Calendar.HOUR,-1); System.out.println(calender2.getTime().toLocaleString());
//补充最大值,最小值
int max = calender2.getActualMaximum(Calendar.DAY_OF_MONTH);
int min = calender2.getActualMinimum(Calendar.DAY_OF_MONTH);
}
}
SimpleDateFormat
对时间转换
public static void main(String[] args) throws Exception{
//把日期转换成字符串
SimpleDateFormat sdf = new SimpleDateFormat("yy/MM/dd");
Date date4 = new Date();
String str = sdf.format(date4);
System.out.println(str);
//把字符串转换成日期
Date date2 = sdf.parse("18/05/01");
System.out.println(date2);
}
System,时间,垃圾回收
public static void main(String[] args) {
int[] a = {1,2,3,4,5,6,7,8,9};
// b 数组初始不能为空需要 new 一下
int[] b= new int[9];
System.arraycopy(a,0,b,0,a.length);
for(int c:b)
System.out.println(c);
String result = " ";
long start = System.currentTimeMillis();
for(int i=0;i<99;i++) {
result += i ;
}
long end = System.currentTimeMillis();
System.out.println(end-start); new Student("zhangsan",87);
System.gc();
System.exit(0);}