Java基础知识合集

1. 初识Java

1.1 Java跨平台原理

在这里插入图片描述

Java源程序(.java)首先编译成与平台无关的字节码文件(.class),然后字节码文件再解释成机器码运行,解释是通过Java虚拟机来执行的。字节码文件不面向任何具体平台,只面向虚拟机,不同平台的虚拟机是不同的,但它们都提供了相同的接口,Java语言具有一次编译,到处运行的特点,就是说编译后的.class可以跨平台运行,前提是该平台具有相应的Java虚拟机。

1.2 JVM、JRE、JDK

JVM:Java Virtual Machine(Java虚拟机)的缩写,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的字节码文件,这种字节码文件在虚拟机上执行。JVM对上层的Java源文件是不关心的,它关注的只是由源文件生成的字节码文件(.class文件)

JRE:JRE是java runtime environment(java运行环境)的缩写。光有JVM还不能让class文件执行,因为在解释class的时候JVM需要调用解释所需要的类库lib

JDK:JDK是java development kit(java开发工具包)的缩写

三者之间的关系

jdk是JAVA程序开发时用的开发工具包,其内部也有运行环境JRE。JRE是JAVA程序运行时需要的运行环境,就是说如果你光是运行JAVA程序而不是去搞开发的话,只安装JRE就能运行已经存在的JAVA程序了。JDk、JRE内部都包含JVM,JAVA虚拟机内部包含许多应用程序的类的解释器和类加载器等等。

2. 字符串

2.1 对象创建的原理

https://blog.csdn.net/cd546566850/article/details/105353791

2.2 String、StringBuilder和StringBuffer三者之间的区别

1、String对象是不可变的,创建了就不能更改,StringBuilder和StringBuffer是可更改的

2、StringBuilder是线程不安全的,StringBuffer是线程安全的

3、运算速度:StringBuilder>StringBuffer>String

使用场合:

  1. 字符串不经常发生变化的业务场景优先使用String
  2. 单线程下,比如有大量的字符串操作的情况下,应该使用StringBuilder
  3. 多线程下,有大量的字符串大的操作的情况下,应该使用StringBuffer
2.3 String类常见的方法
返回值 方法 含义
boolean equals(Object object) 比较两个字符串是否相等
boolean equalsIgnoreCase(String str) 比较两个字符串是否相等,忽略大小写
int length() 返回此字符串的长度
String concat (String str) 将指定的字符串连接到该字符串的末尾
char charAt (int index) 返回指定索引处的 char值
int indexOf (String str) 返回指定子字符串第一次出现在该字符串内的索引
String substring (int beginIndex) 返回一个子字符串,从beginIndex开始截取字符串到字符串结尾。
String substring (int beginIndex, int endIndex) 返回一个子字符串,从beginIndex到endIndex截取字符串。含beginIndex,不含endIndex。 (含左不含右)
char[] toCharArray () 将字符串转换为一个字符数组
String[] split(String regex) 将此字符串按照给定的regex(规则)拆分为字符串数组

其余的方法见API文档

// char[] toCharArray():把字符串转换为字符数组
String s = "abcde";
char[] chs = s.toCharArray();


//split(String regex)
String s = "aa|bb|cc";
String[] strArray = s.split("|"); // ["aa","bb","cc"]

3. 数组

3.1 概述

数组概念: 数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致

3.2 数组的定义

1、方式一

数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度]

int[] arr = new int[3];

2、方式二

数据类型[] 数组名 = new 数据类型[]{
   元素1,元素2,元素3...}

int[] arr = new int[]{
   1,2,3,4,5};

3、方式三

数据类型[] 数组名 = {
   元素1,元素2,元素3...}

int[] arr = {
   1,2,3,4,5};

4. super和this

1、访问成员变量

this.成员变量 ‐‐ 本类的
super.成员变量 ‐‐ 父类的

2、访问成员方法

this.成员方法名() ‐‐ 本类的
super.成员方法名() ‐‐ 父类的

3、访问构造方法

this(...) ‐‐ 本类的构造方法
super(...) ‐‐ 父类的构造方法

子类的每个构造方法中均有默认的super(),调用父类的空参构造。手动调用父类构造会覆盖默认的super()。
super() 和 this() 都必须是在构造方法的第一行,所以不能同时出现。

5. 内部类

5.1 概述

内部类:将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类

5.2 成员内部类

成员内部类 :定义在类中方法外的类

定义格式

class 外部类 {
   
    class 内部类{
   
    }
}

访问特点:

1、内部类可以直接访问外部类的成员,包括私有成员

2、外部类要访问内部类的成员,必须要建立内部类的对象

创建内部类对象格式:

内部类名 对象名 = new 外部类型().new 内部类型(
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值