Day25测试总结

知识归纳

传值与传引用

方法参数为基本数据类型

方法参数为八大基本数据类型,则该方法不会对实际参数任何影响

public static void main(String[] args) {
        int a=1;
        int b=2;
        basicType(a,b);
        System.out.println("a="+a+" b="+b);//a=1 b=2
    }
    public static void basicType(int a,int b){
        a=10;
        b=14;
        System.out.println("a="+a+" b="+b);//a=10 b=14
    }

方法参数为引用类型

方法的参数为引用类型,直接修改该参数会对其造成影响;
若方法中又创建了新对象,则不会对实际参数有影响;

public static void main(String[] args) {
        Demo7 d=new Demo7();
 //一个方法的参数为引用类型 直接修改该参数会对其造成影响
        Piont p=new Piont();
        p.x=7;
        p.y=2;
        d.p(p);
        System.out.println(p.x+"==="+ p.y);
        //2===8 值改变
//方法的参数为引用类型 若方法中又创建了新对象 则不会对实际参数有影响
        p.x=3;
        p.y=5;
        d.p2(p);
        System.out.println(p.x+"==="+ p.y);
        //3===5 值未变
 }
 public void p(Piont p){
        p.x=2;  //未有新对象产生 变量指向最初对象
        p.y=8;
        System.out.println(p.x+"==="+p.y);//2===8
    }
    public void p2(Piont p){
        p=new Piont(); 
        //产生了新对象 变量指向新对象
        System.out.println(p.x+"==="+p.y);//0===0
    }
class Piont{
    int x;
    int y;
}

引用类型

方法参数为字符串[引用类型]

方法参数为字符串[引用类型],若该方法赋值一个新字符串[无论是直接赋值或new String()],不会对实际参数造成影响;

String类型具有不可变性,一旦对象被创建该对象则不会被改变
若对该对象进行修改,则只会创建出新对象,原来的对象保持不变

public static void main(String[] args) {
        Demo7 d=new Demo7();
         //一个方法参数为字符串[引用类型] 该方法赋值一个新字符串 不会对实际参数造成影响
        String strHello = new String("hello");
        d.p(strHello); 
        // 引用传递: fun3函数内部,修改的是局部变量str的引用地址
        System.out.println("strHello:" + strHello);
        //strHello:hello
       
 }
 public void p(String s){
        s= "abcd"; 
// 字符串常量池,把常量池中的"abcd"的引用赋值给str 相当于new了一个对象
        System.out.println("str:" + s);
        //str:abcd
    }

Map键值对

Map接口实现类为HashMap、TreeMap
Map是无序且键不重复的;
判断key是否重复,由equals()方法决定
键值均可以是null,但键的null只能有一个;

获取键,keySet(), 返回Set集合
获取值,values() ,返回Collection集合
获取键值对,entrySet()

添加/修改键值 put(key,value)

若key在集合中不存在,即为添加新的键值对;
若key在集合中已存在,即为修改该键对应的value的值

get(key) 找集合key键的值,找到返回对应的value;没找到,则返回key类型的默认值

File

File类只用于表示文件(目录)的信息(大小,名称等),不能对文件内容进行访问

File创建对象

四种创建方式

new File(String parent,String child)

File f1=new File("D://text","file.txt");

new File(String pathname)

File f1=new File("D://textfile.txt");

new File(File parent,String child)

File f=new File("D://text");
File f3=new File(f,"file.txt");

集合

Coolection接口的子类包含: Set接口和List接口
Map接口的实现类: HashMap ,TreeMap , Hashtable, ConcurrentHashMap以及Properties
Set接口: HashSet , TreeSet , LinkedHashSet等
List接口: ArrayList , LinkedList , Stack 以及Vector等

约束集合与未约束集合

未约束集合类型,则集合中可添加任意类型

此时取出的数据均为object类型
List p=new ArrayLis(); //未约束集合

判断下列是否有错,错哪

public class MapTest {
public static void main(String[] args) {
List pList = new ArrayList();
pList.add("A"); 
pList.add("B"); 
for (int i = 0; i < pList.size(); i++) { 
String str = pList.get(i);
System.out.print(str);
}
}
}

约束数据类型为同一种固定类型(数组元素放同一种类型)
泛型语法规则

List< Point > 约束集合只能存放Point类型
List< Point > ps=new ArrayList<>(); ps是List类型 ps的泛型是Point

List接口: ArrayList , LinkedList

List集合是长度不固定、动态分配的集合
add(i,值) 即在下标为i的位置插入值

判断下列有什么问题

public static void main(String[] args) {
            LinkedList list = new LinkedList();
            list.add("123");
            list.add(4, "4567");
            String s = (String) list.get(2);
            System.out.println(s);
        }

ArrayList每次扩容50%,创建集合默认值为10
数组转ArrayList: 通过 Arrays.asList转换

Integer[] as2 = {1,2,3,3,4,5};
List<Integer> integers = Arrays.asList(as2);

ArrayList转数组: 通过集合的toArray()转换

ArrayList<String> as = new ArrayList<>();// 初始容量10
// 存储1~10000
ArrayList<Integer> as1 = new ArrayList<>(5000);// 设置初始容量
as.add("A");as.add("A");as.add("A");as.add("A");as.add("A");
Object[] objects = as.toArray(); // 不方便使用。
String[] strings = as.toArray(new String[0]);//toArray(new
String[0]) 根据参数的类型,得到对应类型的数组。
for(String s: strings){
System.out.println(s.length());
}
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值