2 Java核心基础
我想和自己说:学习是反复的过程,学习新知识的时候要仔仔细细阅读,错过一个关键词,可能对知识就会有偏差的理解。如果现在没有心情,收藏起来,后面用到的时候再仔细看。希望有帮助。
2.0 基本概念先了解
类
- 类是Java中的基本编程单元,用于描述对象的属性和行为。通过实例化类,可以创建对象
- 类是封装了数据和方法的结构
- Java中,类概念非常核心和基础,用于组织和构建整个程序。
- 类名和文件名是一致的(后面讲class关键词的时候会细聊)
接口
- 接口是一种抽象的类型,它定义了一组方法的签名,但不提供方法的具体实现。
在后面写面向对象章节的时候,会对类和接口进行详解。
变量
- 在程序执行过程中,值可以在某个范围内发生改变的量。
- 变量要明确保存数据的数据类型
包
- 将相关的类和接口组织在一起,一个包下面可以创建很多类文件和接口文件。直接引用功能包,可能节省代码量。
常量
- 在程序执行过程中,值不发生改变的量。
2.1 注释
什么是注释,就是对程序进行解释和说明的文字
- 单行注释
//单行注释
- 多行注释
/*
多行注释
*/
- 文档注释
/**
* 这是一个文档注释示例
* 它通常包含有关类、方法或字段的详细信息
*/
public class MyClass {
// 类的成员和方法
}
2.2 关键字
被Java语言赋予了特殊含义的单词,在idea中会高亮显示,学习完基础知识后,可以再回过头 看看,对每个关键字的用法要熟悉,不然就是没入门
关键字官方文档 https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
-
用于定义数据类型的关键字
- class 类的标识
class HelloWorld {}
, class是Java程序的基本构建块,它包含了数据和方法(死记就行)。Java文件名必须和类名保持一致,为了编译时能够正确识别和定位类(规定,死记就行); 如果一个文件中包含多个类,只能有一个类声明为 public
,并且文件名必须与public类一致
public class MyClass { // 主类 文件名必须是 MyClass.java,程序入口点所在的类,必须要用public修饰,为了执行程序的时候,能够被jvm虚拟机访问到 public static void main(String[] args) { // 入口点 } } class AnotherClass { // 非公共类,在同一个文件中可以有多个} class YetAnotherClass { // 非公共类,建议每个类都存储在独立的文件中,提高代码可读性,如果有多个相关的类,放在同一个包内}
- interface 接口的标识
interface MyInterface {}
- enum 枚举
enum Day { SUNDAY, MONDAY, TUESDAY }
- byte、short、int、long、float、double、char、boolean(八大基本数据类型)
- void 声明方法没有返回值
- class 类的标识
-
流程控制关键字
- if else switch case default while do for break continue return
-
包的关键字
package
:将相关的类和接口组织在一起,一个包下面可以创建很多类文件和接口文件,在Java代码中 声明包package com.example.myapp
包名通常是反转的域名,看到包就知道是什么功能import
导包,引入其他包中的类import com.otherpackage.OtherClass
-
访问权限修饰符关键字
访问控制权限在Java中为了管理类,方法,变量等成员在其他类中的可见性和访问权限。有利于控制代码的封装性,安全性和可维护性
private
私有的 成员只对声明它的类可见,其他类无法访问protected
受保护访问同一包内的类和所有子类可见
public
: 成员对所有类可见,其他类可以自由访问- 扩展:default(package-private)默认访问级别,没有修饰符,成员对统一包内的类可见
-
类,函数,变量修饰符关键字
abstract
用于声明抽象类、抽象方法。抽象类不能被实例化,通常包含抽象方法,子类需要实现这些抽象方法。
什么是抽象类和抽象方法
final
用于声明不可被继承的类final class FinalClass{}
;声明不可被重写的方法final void finalMethod() {}
;声明不可被修改的变量final int constantValue = 10;
static
表名具有静态属性。
// 静态字段属于类,所有类的实例共享相同的静态字段。 // 通过类名直接访问 class Myclass { static int staticField = 10; // 静态方法属于类,不用创建实例,通过类名直接访问 static void staticMethod() { } // 静态块 用于类加载时执行一些初始化操作 static { // 静态块} }
synchronized
修饰方法或代码块,确保同一时刻只有同一个线程可以访问修饰的部分
-
类与类之间关系关键字
extends
:用于类之间的继承关系implements
:接口的实现
-
实例相关关键字
- new 创建对象实例
ClassName obj = new ClassName();
- this:代表当前对象的引用,在类的方法中使用
this.variable
指的是当前对象的成员变量 - super:用于调用父类的方法或访问父类的成员
- instanceof:用于检查对象是否是特定类的实例
if (obj instanceof ClassName)
- new 创建对象实例
-
异常处理关键字
- try、catch、finally、throw、throws
-
其他修饰符关键字
- native strictfp transient volatile
- assert:断言检查
assert age >= 18 : "必须年满18岁";
2.3 标识符
标识符就是用来给类,接口,方法,变量,包等其名字的规则
类、接口
: 大驼峰命名法,第一个单词大写的是类\接口HelloWorld, VariableDemo
变量, 方法
: 小驼峰命名法 第一个单词小写的是方法和变量zhangSanAge, studentName
常量
:所有字母都大写包
:所有字母全部都小写com.baidu
2.4 数据类型
Java是强类型语言,每一个数据都给出了明确的数据类型
-
基本数据类型(简称: 基本类型)
- byte, short, char, int, long, float, double, boolean
- 定义long类型的数据时, 数据后边要加字母L(大小写均可), 建议加L
- 定义float类型的数据时, 数据后边要加字母F(大小写均可), 建议加F
-
引用数据类型(简称: 引用类型)
- String, 数组, 类, 接口
-
数据类型转换
不同类型的数据之间可能会进行运算,而这些数据取值范围不同,存储方式不同,直接进行运算可能会造成数据损失,所以需要类型转换- 自动(隐式)类型转换 将取值范围小的类型自动提升为取值范围大的类型,
byte、short、char-->int-->long-->float-->double
- 强制(显式)类型转换 将取值范围大的类型强制转换成取值范围小的类型.
- 自动(隐式)类型转换 将取值范围小的类型自动提升为取值范围大的类型,
public static void main(String[] args) {
double doubleValue = 123.456;
int intValue = (int) doubleValue; // 强制将double转换为int
System.out.println("原始double值:" + doubleValue);
System.out.println("强制转换后的int值:" + intValue);
/*原始double值:123.456
强制转换后的int值:123 */
}