java学习笔记2

  

  • HashMap 的遍历
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import java.util.HashMap;
    public class test3 {
    public static void main(String[] args){
    HashMap<String, String> dic = new HashMap<>();
    dic.put("name","storm");
    dic.put("sex","man");
    for (String key : dic.keySet()){
    System.out.println(key + ":" + dic.get(key));
    }
    }
    }
  • ArrayList
    ArrayList 和数组的区别有点类似go语言中切片和数组的区别,数组是一种静态的数据类型,长度固定,类型固定,而ArrayList的长度可以扩展且数据类型可以是任意类型(如果定义时不加任何泛型则可以存放任意类型)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    import java.util.ArrayList;
    public class test3 {
    public static void main(String[] args){
    ArrayList<String> list = new ArrayList<>();
    list.add("super");
    list.add("storm");
    list.add("java");
    System.out.println(list.toString());
    list.set(0, "fx");
    System.out.println(list.toString());
    list.remove("fx");
    System.out.println(list.toString());
    System.out.println(list.indexOf("java"));
    }
    }
  • java 继承
    java继承使用extends关键字
    在任意目录下创建三个文件分别为test3.java test2.java test1.java
    写入代码
    test3.java

    test3.java
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class test3 {
    public String name;
    private int age;
    public test3(String name, int age){
    this.name = name;
    this.age = age;
    }
    public void show(){
    System.out.println(this.age);
    }
    }

    test2.java

    test2.java
    1
    2
    3
    4
    5
    public class test2 extends test3{
    public test2(String name, Integer age){
    super(name,age);
    }
    }

    test1.java

    test1.java
    1
    2
    3
    4
    5
    6
    7
    public class test1 {
    public static void main(String[] args){
    test2 test = new test2("storm", 18);
    System.out.println(test.name);
    test.show();
    }
    }

    编译后运行test1。

    1
    2
    3
    4
    javac test3.java
    javac test2.java
    javac test1.java
    java test1

    运行结果:

    1
    2
    storm
    18

    值得注意的是java不支持多继承,只能多层继承,根据官方的意思是java多继承容易引起歧义,即如果继承的两个父类有同名的方法,编译器不知道子类中该指向哪个方法,另外java继承中子类不能访问父类对其不可见的变量,例如private修饰的变量

  • interface 接口
    接口是一个对方法的抽象集合,即一个接口声明了堆需要实现的方法,但它不实现方法代码体,也不能直接实例化,,可以多继承,java类是不能多继承的
    在任意目录下创建三个文件分别为test3.java test2.java test1.java
    test1.java 声明接口

    1
    2
    3
    4
    public interface test1 {
    public void work();
    public void study();
    }

    test2.java 实现接口关键字implements,注意,一个类如果实现接口,要么全部实现接口中的方法,要么声明为抽象类

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import org.omg.Messaging.SYNC_WITH_TRANSPORT;

    public class test2 implements test1{
    public void work(){
    System.out.println("work");
    }
    public void study(){
    System.out.println("study");
    }
    }

    test3.java 实例化,调用接口方法

    1
    2
    3
    4
    5
    6
    7
    public class test3 {
    public static void main(String[] args){
    test2 test = new test2(){};
    test.study();
    test.work();
    }
    }

    编译,执行

    1
    2
    3
    4
    javac test1.java
    javac test2.java
    javac test3.java
    java test3

    输出结果

    1
    2
    study
    work
  • Java的异常
    代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    public class test3 {
    public static void main(String[] args){
    int[] a = new int[2];
    try{
    int b = a[3];
    }catch (ArrayIndexOutOfBoundsException e){
    System.out.println("catch exception1:" + e);
    }finally {
    System.out.println("finally exec1");
    }
    try{
    throw new ArrayIndexOutOfBoundsException(4);
    }catch (ArrayIndexOutOfBoundsException e){
    System.out.println("catch exception2:" + e);
    }finally {
    System.out.println("finally exec2");
    }
    }
    }

    编译后执行的结果为:

    1
    2
    3
    4
    catch exception1:java.lang.ArrayIndexOutOfBoundsException: 3
    finally exec1
    catch exception2:java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 4
    finally exec2
-------------本文结束感谢您的阅读-------------

本文标题:java学习笔记2

文章作者:fengxi

发布时间:2019年01月10日 - 09:01

最后更新:2019年04月04日 - 21:04

原始链接:https://super-storm.github.io/2019/01/10/java学习笔记2/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。