常用类

内部类

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(更高效)的使用

  1. append 添加
  2. insert(),插入
  3. replace()
  4. delete(0,str.length);删除
  5. 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);}