Java——学习笔记(1)

二维数组

  1. 元素是一维数组的数组
  2. 格式
    // T为数据类型
    T[][] a = new T[m][n];
    T[][] a = new T[m][];
    T[][] a = new T[m][n]{{...}, {...}, {...}};
    T[][] a = {{...}, {...}, {...}}
    
  3. 案例
    • 二维数组的遍历
    • 二维数组的求和
    • 杨辉三角形

Java中的参数传递问题

java中只有值传递
基本类型:形式参数的改变不影响实际参数
引用类型:形式参数的改变影响实际参数

代码Student s = new Student();做了哪些事?

  • 把Student.class文件加载到内存
  • 在栈内存为s开辟控件
  • 在堆内存为学生对象申请空间
  • 给学生的成员变量默认初始化, null,0
  • 对象构造完毕,把地址赋值给s变量

static关键字

  1. 静态的意思:可以用来修饰成员变量和方法

  2. 静态的特点

    • 随着类的加载而加载
    • 优先于对象存在
    • 被类的所有对象共享
    • 可以通过类名调用,也可以通过对象名调用,建议通过类名调用。
  3. 静态的注意事项

    • 静态方法中没有this对象
    • 静态只能访问静态
  4. 静态变量和成员变量的区别

    • 所属不同
      • 静态变量:属于类,类变量
      • 成员变量:属于对象,对象变量,实例变量
    • 内存位置不同
      • 静态变量:方法区的静态区
      • 成员变量:堆内存
    • 生命周期不同
      • 静态变量:随着类的加载而加载,随着类的消失而消失
      • 成员变量:随着对象的创建而存在,随着对象的消失而消失
    • 调用不同
      • 静态变量:可以通过对象名调用,也可以通过类名调用
      • 成员变量:只能通过对象名调用
  5. main方法是静态的

    • public:曲线最大
    • static 不用创建对象调用
    • void:返回值给JVM没有意义

如何制作帮助文档?

  • 写一个类
  • 加入文档注释
  • 通过javadoc工具生成:javadoc -d 目录 -author -version ArrayTool.java

Math

  • 没有构造方法,所有成员都是静态的
  • 产生随机数 public static double random(): // [0.0, 1.0)

final关键字

  1. 是最终的意思,可以修饰类、方法、变量
  2. 特点
    • 它修饰的类, 不能被继承
    • 它修饰的方法,不能被重写
    • 它修饰的变量,是一个常量
  3. 注意:
    • 局部变量:
      • 基本类型:值不能发生改变
      • 引用类型:地址值不能发生改变,但是对象的内容是可以改变的。
    • 初始化时机
      • 只能初始化一次
      • 常见的给值
        • 定义的时候(推荐)
        • 构造方法中

抽象类

  • 抽象类的特点:
    • 抽象类和抽象方法必须用关键字abstract修饰
    • 抽象类中不一定有抽象方法,但是有抽象方法的一定是抽象类
    • 抽象类不能实例化
    • 抽象类的子类
      • 是一个抽象类
      • 是一个具体类,这个类必须重写抽象类中的所有抽象方法
  • 抽象类成员的特点:
    • 成员变量:有变量、有常量
    • 构造方法:有
    • 成员方法:有抽象、有非抽象
  • 注意
    • 抽象类有构造方法,不能实例化,那么构造方法有什么用?
      用于子类访问父类数据的初始化
    • 一个类如果没有抽象方法,却定义为了抽象类,有什么用?
      为了不创建对象
    • abstract不能和哪些关键字并存
      final:冲突
      private:冲突
      static:无意义

接口

  • 接口的实现类
    抽象类
    具体类:这个类必须重写接口中的所有抽象方法
  • 成员特点
    成员变量:只能是常量,默认修饰符public static final
    构造方法:没有构造方法
    成员方法:只能是抽象的,默认修饰符public abstract

内部类

  • 把类定义在另一个类的内部,该类就叫做内部类
  • 内部类的访问规则
    可以直接访问外部类的成员,包括私有
    外部类想要访问内部类成员,必须创建对象
  • 内部类的分类
    • 成员内部类
    • 局部内部类
  • 成员内部类
    • private为了数据的安全性
    • static为了访问的方便性
    • 成员内部类不是静态的
      外部类名.内部类名 对象名 = new 外部类名.new 内部类名();
    • 成员内部类是静态的
      外部类名。内部类名 对象名 = new 外部类名.内部类名();
  • 局部内部类
    • 局部内部类访问局部变量必须加final修饰,因为局变量使用完毕消失,而堆内存中的数据并不会立即消失,所以,堆内存还是用该变量,而该变量已经没有了。为了让该值还存在,就加final修饰,通过反编译工具我们看到了,加入final后,堆内存直接存储的是值,而不是变量名。
  • 匿名内部类
    • 是局部内部类的简化形式
    • 前提:存在一个类或接口
    • 格式:
      new 类名或者接口名() {
      	重写方法;
      }
      
    • 本质:其实是继承该类或者实现接口的子类匿名对象

Object

  • Object类是类层次结构的根类,所有的类都直接或者间接继承自Object类
  • Object类的构造方法有一个,并且是无参构造
  • 方法
    • toString():返回对象的字符串表示,一般子类会重写该方法
    • equals():比较两个对象是否相同,默认情况下,比较的是地址值是否相同。
    • hashCode():返回对象的哈希值
    • getClass():返回对象的字节码文件对象
    • finalize():用于垃圾回收,在不确定的时间
    • clone():可实现对象的克隆,包括成员变量的数据复制,但是它和两个引用指向同一个对象是有区别的。
  • 注意
    • 直接输出一个对象名称,其实默认调用了该对象的toString()方法。

Scanner

  • 构造方法
    InputStream is = System.in;
    Scanner(InputStream is);
    
  • 常用格式
    Scanner sc = new Scanner(System.in);
    
  • 常用的方法格式:
    • hasNextXxx():判断是否是某种类型
    • nextXxx():返回某种类型的元素

String

  • 构造方法
    • public String();
    • public String(byte[] bytes);
    • public String(byte[] bytes, int offset, int length);
    • public String(char[] value);
    • public String(char[] value, int offset, int count);
    • public String(String original);
    • 下面的这个虽然不是构造方法,但是结果也是一个字符串对象
      String s = "hello";
  • 字符串的特点
    • 字符串一旦被赋值,就不能改变(这里指的是字符串的内容不能改变,而不是引用不能改变)
    • 字面值作为字符串对象和通过构造方法创建对象的不同
  • 字符串的功能
    • 判断功能
      • boolean equals(Object obj);
      • boolean equalsIgnoreCase(String str);
      • boolean contains(String str);
      • boolean startsWith(String str);
      • boolean endsWith(String str);
      • boolean isEmpty();
    • 获取功能
      • int length();
      • char charAt(int index);
      • int indexOf(int ch);
      • int indexOf(String str);
      • int indexOf(int ch, int fromIndex);
      • int indexOf(String str, int fromIndex);
      • String subString(int start);
      • String subString(int start, int end);
    • 转换功能
      • byte[] getBytes();
      • char[] toCharArray();
      • static String valueOf(char[] chs);
      • static String valueOf(int i);
      • String toLowerCase();
      • String toUpperCase();
      • String concat(String str);
    • 替换功能
      • String replace(char old, char new);
      • String replace(String old, String new);
    • 去空格功能
      • String trim();
    • 按字典序比较功能
      • int compareTo(String str);
      • int compareToIgnoreCase(String str);

StringBuffer

  • 用字符串拼接比较耗时并且耗内存,而这种操作又是比较常见的,为了解决这个问题,Java就提供了一个字符串缓冲类StringBuffer
  • 构造方法
    • StringBuffer();
    • StringBuffer(int size);
    • StringBuffer(String str);
  • 常见功能
    • 添加功能
      • StringBuffe append(char c);
      • StringBuffer insert(int offset, String str);
    • 删除功能
      • String deleteCharAt(int index);
      • String delete(int start, int end);
    • 替换功能
      • StringBuffer replace(int start, int end, String s);
      • void setCharAt(int index, char ch);
    • 翻转功能
      • StringBuffer reverse();
  • 注意
    • StringBuffer:同步的,数据安全,效率低一些
    • StringBuilder:不同步的,数据不安全,效率高

Arrays工具类

  • static <T> List<T> asList(T...a):转换成List
  • static int binarySearch(T[], T key):二分查找
  • static <T> void sort(T[] a, Comparator<? super T> c):排序
  • static fill(Object[] a, Object val):填充

Stringint的相互转化

  • int num = Integer.parseInt("100");
  • String num = String.valueOf(100);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值