Java入门到精通——第二十单元 集合①

测试题

1.==和equals的区别
== 如果两边基本数据类型,比较的是具体的数值。

2.怎样获取当前时间的毫秒值
Date date=new Date(); long time=date.getTime();

3.日期对象转换成毫秒值及毫秒值转换为日期对象的方法分别是?
日期对象转换为毫秒值:getTime(); 毫秒值转换为日期对象:setTime(long time);

4.日期对象转换字符串及字符串转换为日期对象的方法分别是?
日期对象转换字符串:format(); 字符串转换为日期对象:parse();

5.日期格式化的格式规则中年月日,时分秒分别使用什么字母表示
y M d h m s

6.Calendar类中的常用方法有哪些?分别是什么含义
set() get() add() getTime()

7、多态的前提、好处、及弊端。

前提:1、继承(extends)或者实现(implements)

​ 2、重写父类或者接口中的方法

​ 3、父类的引用指向子类对象

好处:提高代码的灵活性

弊端:不能调用子类特有的方法,先判断在向下转型

8、java中标识符的命名规则。–参考阿里开发手册

1、可以使用26个英文字母大小写

2、数字0~9

3、_和$

不能以数字或者关键字开头

不能以特殊字符或者中文开头

变量名:首字母小写,符合小驼峰式 常量全部是大写,下划线连接

方法名:首字母小写,符合小驼峰式

类名:首字母大写,符合大驼峰式

接口名:首字母大写,符合大驼峰式

9、java中的关键字都有哪些(学过的)?

public protected private default static void class new

byte short int long float double char boolean extends super this implements abstract true false

return conntinue break const goto interface swtich case if…else for while do

10、java中的数据类型都有哪些?

基本数据类型 整型byte short int long

​ 浮点型float double

​ 字符型char

​ 布尔型boolean

引用数据类型 类 接口 数组


今日重点学习目标

  1. StringBuilder类
  2. 包装类
  3. Collection集合

StringBuilder类

String类:特点 代表的是字符串,一旦创建不可改变。存储在常量池

举例:

String s="hello";
s=s+"world";
System.out.println(s);
//第一个问题
在堆内存中创建了一个对象 3//第二个问题
输出结果:helloworld

1.1 StringBuilder类

概念

一个可变的字符序列

特点

是可变的字符序列,其初始容量为 16 个字符。如果超过默认初始容量,会自动扩容。

方法

  1. 空参构造方法

public StringBuilder();构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。

代码演示

//通过空参的构造器
StringBuilder sb=new StringBuilder();
  1. public StringBuilder append(String str);将指定的字符串追加到此字符序列。

    public StringBuilder append(int i);

    public StringBuilder append(double d);

    public StringBuilder append(char[] d);

代码演示

public class DemoStringBuilder {
    public static void main(String[] args) {
        //通过空参的构造器
        StringBuilder sb = new StringBuilder();
        //将指定的字符串追加到此字符序列。
       /* sb.append("hello");
        sb.append("world");
        sb.append("xingbo");
        sb.append("nihao");*/
        //链式编程
        sb.append("yangguo").append("xiaolongnv").append("zhenzhibing").append("huagnrong");
        System.out.println(sb);
        //append(int i)  append(boolean)
        int[] arr={1,2,3};
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
            sb.append(arr[i]);
        }
        sb.append(10).append(true).append(1.1f);
        System.out.println(sb);
    }
}
}
  1. public StringBuilder reverse()

需求"abc" 反转后 “cba”

代码演示

public class DemoStringBuilder02 {
    /**
     * 字符串反转
     * “abc"----"cba"
     */
    public static void main(String[] args) {
        StringBuilder sb=new StringBuilder("abc");//有参的构造器来追加字符串
        StringBuilder reverse = sb.reverse();//体现了面向对象的思想
        System.out.println(reverse);
    }
}
  1. public StringBuilder insert(int offset,char c);将char参数的字符串表示形式插入此序列中。
public class DemoStringBuilder03 {
    public static void main(String[] args) {
        StringBuilder sb=new StringBuilder("abc");
        //需求在a的字符后面追加一个e 结果aebc
        sb.insert(1,'e');
        System.out.println(sb);
    }
}
  1. public int capacity():返回当前的容量
public class DemoStringBuilder03 {
    public static void main(String[] args) {
        StringBuilder sb=new StringBuilder();
        int capacity = sb.capacity();//获取当前的容量
        System.out.println(capacity);//16 
    }
}

笔试题

public class Demo04 {
    public static void main(String[] args) {
        StringBuilder sb1=new StringBuilder("abc");
        StringBuilder sb2=new StringBuilder();
        sb2.append("abc");
        System.out.println(sb1.equals(sb2));//false
    }
}
  1. public String toString():返回此序列中数据的字符串表示形式。
public class DemoStringbuilder05 {
    public static void main(String[] args) {
        StringBuilder sb=new StringBuilder();
        sb.append("abc");//可变字符序列
        String s = sb.toString();
        System.out.println(s);//不可变的字符序列
    }
}

笔试题 String StringBuffer StringBuilder

StringBuilder是线程不安全。说明方法中没有加锁synchronized。效率高。开发中推荐使用StringBuilder

StringBuffer是线程安全的。方法中有加锁synchronized。效率低。

StringBuilder和StringBuffer的共同点都是可变的字符序列。

String:是一个不可变的字符序列。

总结:只要该类线程是安全,效率都低。

包装类

2.1 概述

把基本数据类型,当做引用类型来使用。根据项目具体需求来使用。

基本数据类型对应的包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

如何把基本数据类型转换为引用数据类型

2.2 装箱和拆箱操作

解决方案

装箱:把基本数据类型转换为引用数据类型

拆箱:把引用数据类型转换为基本数据类型

举例: int-----> Integer 三种方式实现装箱操作

Integer类的构造方法

public Integer(int value);

public static Integer valueOf(int i);

代码演示

public class DemoInteger01 {
    /*
    把基本数据类型转换为引用数据类型
    第一种使用构造器来实现装箱的操作
    public Integer(int value)
    第二种static Integer valueOf(int i)
         返回一个表示指定的 int 值的 Integer 实例。
     第三种
         直接赋值 例如Integer i=20;
     */
    public static void main(String[] args) {
        Integer integer = new Integer(10);//通过构造器来实现装箱动作 把int提升为Integer
        System.out.println(integer);
        System.out.println("----------------------------");
        Integer integer1 = Integer.valueOf(20);//通过valueOf这个方法来实现装箱的操作。把int提升为Integer
        System.out.println(integer1);
        System.out.println("----------------------------");
        Integer i = 30;//等号右边是基本数据类型30 默认有一个自动装箱的操作
        System.out.println(i);
    }
}

拆箱操作:把引用数据类型转换为基本数据类型

举例 Integer---->int

/**
 * Create by yanhongbo
 * 日期 2021/4/23
 *  拆箱操作: 把引用数据类型转换基本数据类型
 *  Integer--->int
 *  使用int intValue();以int类型返回该Integer的值
 * @Version 1.0
 */
public class DemoInteger02 {
    public static void main(String[] args) {
        Integer integer=new Integer(10);
        int i = integer.intValue();
        System.out.println(i);//基本数据类型 10
    }
}

2.3 自动装箱和拆箱的操作

代码演示

/**
 * Create by yanhongbo
 * 日期 2021/4/23
 *  自动装箱和自动拆箱
 * @Version 1.0
 */
public class DemoInteger03 {
    public static void main(String[] args) {
        Integer i=10;//隐含一个动作 自动装箱的操作
        i=i+10;//隐含了2个动作 等号右边隐含了一个自动拆箱引用--基本 左右实现了一个自动装箱的操作
        System.out.println(i);
    }
}

2.4 int类型转换为String类型

直接+""

代码演示

public class Demo04 {
      //int ---->String
    public static void main(String[] args) {
        int a=10;
        String s= a+"";
     }
}

2.5 String类型转换int类型

调用Integer中的parseInt(String str);

public class Demo04 {
    public static void main(String[] args) {
       //"10" 第一个操作 转为Integer  第二步把Integer转换为Int类型
        int i = Integer.parseInt("10");
        System.out.println(i);//基本数据类型10
    }
}

Collection集合

java.util.Collection包下

3.1 概念

Collection 层次结构 中的根接口,它是单列集合的根接口。

Java中的集合有几种形式

2种 单列集合(Collection)和双列集合(Map)key-value

3.2 方法

Collection是所有单列集合的父接口,因此在Collection中定义了单列集合(List和Set)通用的一些方法,这些方法可用于操作所有的单列集合。方法如下:

  • public boolean add(E e) : 把给定的对象添加到当前集合中 。
  • public void clear() :清空集合中所有的元素。
  • public boolean remove(E e) : 把给定的对象在当前集合中删除。
  • public boolean contains(E e) : 判断当前集合中是否包含给定的对象。
  • public boolean isEmpty() : 判断当前集合是否为空。
  • public int size() : 返回集合中元素的个数。
  • public Object[] toArray() : 把集合中的元素,存储到数组中

代码演示

/**
 * Create by yanhongbo
 * 日期 2021/4/23
 *- public boolean add(E e) : 把给定的对象添加到当前集合中 。
 * - public void clear() :清空集合中所有的元素。
 * - public boolean remove(E e) : 把给定的对象在当前集合中删除。
 * - public boolean contains(E e) : 判断当前集合中是否包含给定的对象。
 * - public boolean isEmpty() : 判断当前集合是否为空。
 * - public int size() : 返回集合中元素的个数。
 * - public Object[] toArray() : 把集合中的元素,存储到数组中
 * @Version 1.0
 */
public class DemoCollection {
    public static void main(String[] args) {
        Collection<String> col=new ArrayList<>();//多态形式  创建colleciton对象
        col.add("aaa");
        col.add("bbb");
        col.add("ccc");
        System.out.println(col);//[aaa, bbb, ccc]
      //  col.clear();
       // System.out.println(col);//[]

      /*  boolean b= col.remove("aaa");
        System.out.println(b);//true
        System.out.println(col);//[bbb,ccc]
        boolean siyuan = col.contains("bbb");
        System.out.println(siyuan);*/
       // boolean empty = col.isEmpty();
       /// System.out.println(empty);
        /*int size = col.size();
        System.out.println(size);*/
        Object[] objects = col.toArray();
        //增强for jdk5的新特性
        /**
         * for(数据类型 变量名:集合变量名){
         *
         * }
         * for(String s:objects){
         *     System.out.println(s);
         * }
         */
       /* for (Object object : objects) {
            System.out.println(object);
        }*/
        for(int i=0;i<objects.length;i++){
            System.out.println(objects[i]);
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沐黎Mu li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值