Java笔记随笔(基础)

JDK、JRE、JVM三者的区别

  1. JDK(Java Development Kit): 是太阳微系统针对Java开发人员发布的免费软件开发工具包 是整个Java和音,包括了Java运行环境JRE(Java Runtime Environment),一堆Java工具(javac,Java,jdb等)和Java基础类库(即JavaAPI包括rt.jar)
  2. JRE(Java Runtime Environment):JRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。
  3. JVM(java virtual machine):JVM是JAVA虚拟机,它将.class字节码文件编译成机器语言,以便机器识别! JAVA程序就是在JVM里运行的。

Java的三大特征

三大特征即为封装、继承、多态。

Java的五大原则

  1. 单一职责原则(SRP)
  2. 开放封闭原则(OCP)
  3. 里氏替换原则(LSP)
  4. 依赖倒置原则(DIP)
  5. 接口隔离原则(ISP)

不知如何归类的杂项

  1. Java的基本编程单位是类,基本存储单元是变量。
  2. Java的源文件的扩展名是.java,而经过编译之后的扩展名是.class

值传递和引用传递

  1. 值传递:方法调用时,实际参数把它的值传递给对应的形式参数,函数接收的是原始值的一个copy,此时内存中存在两个相等的基本类型,即实际参数和形式参数,后面方法中的操作都是对形参这个值的修改,不影响实际参数的值。

  2. 引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,函数接收的是原始值的内存地址;在方法执行中,形参和实参内容相同,指向同一块内存地址,方法执行中对引用的操作将会影响到实际对象。

Java中各修饰符的作用范围

  1. public:不同包,同一类和子类下方法均可调用
  2. protected:同一包,同一类和子类下方法均可调用,无法修饰外部类
  3. 不写修饰符(default):同一包,当前类下可调用
  4. private:只有当前类下可调用,无法修饰外部类
  5. final
    1. 修饰变量,变量的引用地址不可变,但是地址中的内容可以变。
    2. 修饰方法,方法不可被重写,但是还是可以重载
    3. 修饰类,类不可继承。
  6. static:表示这个方法或变量是静态的,静态方法不能被子类重写

String,StringBuffer,StringBuilder的区别:

  1. String的对象是定长的,StringBuffer的对象是长度可变的
  2. StringBuffer线程安全,StringBuilder非线程安全
  3. StringBuffer字符串的拼接用append方法
  4. 运行速度:StringBuilder>StringBuffer>String
  5. StringBuffer拼接字符串用append方法

重写和重载的区别

  • 重写:两同两小一大
    • 方法名相同,参数类型相同
      子类返回类型小于等于父类方法返回类型,
      子类抛出异常小于等于父类方法抛出异常,
      子类访问权限大于等于父类方法访问权限。
  • 重载:
    • 方法名必须相同
    • 参数列表必须不同
    • 返回值类型可以相同也可以不同
    • 被重载的方法可以改变访问修饰符;
    • 被重载的方法可以声明新的或更广的检查异常;
    • 方法能够在同一个类中或者在一个子类中被重载。

Java中字节流和字符流的区别

  • 以stream结尾都是字节流,reader和writer结尾都是字符流。
  • InputStream是所有字节输入流的父类,OutputStream是所有字节输出流的父类。
  • Reader是字符输入流的父类,Writer是字符输出流的父类。

类中的各类型变量

  • 成员变量:
    • 类变量:又称为静态变量,用static修饰。一个类的静态变量,所有由这类生成的对象都共用这个类变量,类装载时就分配存储空间。一个对象修改了变量,则所有对象中这个变量的值都会发生改变。
    • 实例变量:定义在类中的变量称为实例变量。具有默认的初始值,从属于类由类生成对象时,才分配存储空间,各对象之间的实例变量互不干扰,能通过对象的引用来访问实例变量。
      子主题 1
  • 局部变量:局部变量是方法中或者局部块中声明定义的变量或方法,没有默认初始值,赋值之后才能使用。

抽象类和接口的区别

  1. 抽象类可以有构造方法,接口中不能有构造方法。
  2. 抽象类中可以有普通成员变量,接口中没有普通成员变量
  3. 抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
  4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
  5. 抽象类中可以包含静态方法,接口中不能包含静态方法
  6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
  7. 一个类可以实现多个接口,但只能继承一个抽象类。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值