java高级(一)

引用数据类型:类,接口,数组

装箱是将基本数据类型转换为包装器类型;拆箱是将包装器类型转换为基本数据类型。

Integer i = 8;  //装箱  
int n = i;   //拆箱 

public class Main {  
    public static void main(String[] args) {  
           
        Double i1 = 100.0;  
        Double i2 = 100.0;  
        Double i3 = 200.0;  
        Double i4 = 200.0;  
           
        System.out.println(i1==i2);  //ture
        System.out.println(i3==i4);  //false
    }  
} 

注:范围在-128到127会返回内存中存在的引用,超过127就会采用new一个对象,所以上面的==其实就是比较内存地址,而不是比较数值大小。


String类的操作

public class ForTest {  
  
    public static void main(String args[]){  
  
        String s1 = "Hello world";  
        String s2 = "Hello java";  
        if(s1.equals(s2)){  
            System.out.println("equal");  
        }  
  
        if(s1.startsWith("He")){  
            System.out.println("begin with He");  
        }  
      
        if(s1.endsWith("world")){  
            System.out.println("end with World");  
        }  
   
        System.out.println("s1 中字母d的索引为: "+ s1.indexOf('d'));  
        System.out.println("索引从3到8的子字符串: "+ s1.substring(3,8));  
        System.out.println("拼接到后面: "+ s1.concat("abcd"));  
        System.out.println("替换单个字母: "+ s1.replace('H','z'));   
        System.out.println("替换第一个字母: "+ s2.replaceFirst("H","AABB"));  
        System.out.println("是否包含world: "+ s1.contains("world"));    
        System.out.println("根据空格切割: "+ s1.split(" "));  
    }  
}

StringBuilder和StringBuffer的区别?

StringBuffer是线程安全的,而StringBuilder不是,如果不考虑线程安全,尽量用StringBuilder来修改字符串。


Array类  和   Arrays类

import java.lang.reflect.Array;  
import java.util.Arrays;  
   
public class ArraysDemo {  
  
    public static void main(String args[]){  
  
        int[] a = {40, 20, 50, 10, 60, 30};    
        int b = Array.getInt(a, 2);  
        Array.set(a,2,80);                                                                                                                                    
        System.out.println(Arrays.toString(a));  
        Arrays.sort(a);  
    
         //排序(从大到小),前提是利用前面已经排好的数组  
        int len = a.length;  
        for(int i=0; i<len/2; i++){  
            int temp = a[i];  
            a[i] = a[len-1-i];  
            a[len-1-i] = temp;  
        }  
        System.out.println("逆序后:"+Arrays.toString(a));  
  
        //比较两个数组是否相等  
        int[] c = {10, 20 , 30 , 50 , 70};  
        System.out.println(Arrays.equals(a, c));  
    }  
}  

数组拷贝

1.直接赋值:int a = 10, int b=a; 这个时候,a和b是完全相等,内存地址相同,内容相同, 修改a即修改b. 例如:

public class ArraysDemo {  
  
    public static void main(String args[]){  
  
        int[] a = {40, 20, 50, 10, 60, 30};  
        int[] b = a;  
          
        System.out.println(a == b);   //ture
        Array.set(a,2,100);  
        System.out.println("a "+Arrays.toString(a));  //a [40,20,100,10,60,30]
        System.out.println("b "+Arrays.toString(b));  //b [40,20,100,10,60,30]
    }  
}  

2. clone()方法, ab两者独立,不互相影响

public class ArraysDemo {  
  
    public static void main(String args[]){  
  
        int[] a = {40, 20, 50, 10, 60, 30};  
        int[] b = a.clone();  
  
        System.out.println(a == b);  //false
        Array.set(a,2,100);  
        System.out.println("a "+Arrays.toString(a));  //a [40,20,100,10,60,30]
        System.out.println("b "+Arrays.toString(b));  //b [40, 20, 50, 10, 60, 30]
    }  
}  
3. 浅拷贝  System.arraycopy(a,index,b,index,length)      ab两者独立,不互相影响

public class Test3 {
	public static void main(String[] args) {
		String[] a = { "Beijing", "ShangHai", "HeBei", "GuangZhou", "XiAn" };
		String[] b = new String[a.length];
		System.arraycopy(a, 0, b, 0, a.length);

		System.out.println(a == b); //false
		
		Array.set(a, 2, "WuHan");
		System.out.println("a " + Arrays.toString(a));
		System.out.println("b " + Arrays.toString(b));
	}
}

4. 浅拷贝  Arrays.copyOf(a,length)      ab两者独立,不互相影响

public class ArraysDemo {  
  
    public static void main(String args[]){  
  
        String[] a = {"Beijing", "ShangHai", "HeBei", "GuangZhou", "XiAn"};  
        String[] b = Arrays.copyOf(a, a.length);  
  
        System.out.println(a == b);  
         
        Array.set(a,2,"WuHan");  
        System.out.println("a "+Arrays.toString(a));  
        System.out.println("b "+Arrays.toString(b));  
    }  
}  



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值