java语言基础知识

发布时间:2026/8/20 13:48:32
java语言基础知识 文章目录Java 语言简介️ 开发环境搭建核心工具环境变量配置基础语法第一个 Java 程序注释标识符命名规则变量与数据类型八大基本数据类型引用类型数据类型转换运算符常用运算符分类易错点流程控制条件语句循环语句数组一维数组二维数组️ 面向对象编程OOP类与对象构造方法封装四大访问权限继承多态方法重载Overloadvs 方法重写Override常用关键字异常处理try-catch-finally异常分类自定义异常包与导入输入输出包装类与自动装箱/拆箱Java 语言简介Java 是由 Sun Microsystems 公司于 1995 年推出的高级程序设计语言目前由 Oracle 拥有和维护。其核心理念是“一次编写到处运行”Write Once, Run Anywhere。Java 的核心特点跨平台性依靠 JVMJava 虚拟机同一套代码可以在 Windows、Mac、Linux 等不同系统上运行面向对象Java 是纯面向对象语言万物皆对象自动内存管理内置垃圾回收机制GC自动回收不再使用的对象安全性与健壮性强制类型校验减少程序运行错误多线程支持原生支持多线程编程Java 三大平台平台说明Java SE标准版用于桌面程序开发Java EE企业版用于 Web 项目和企业级开发Java ME微型版用于嵌入式设备程序运行流程.java 源文件 → javac 编译 → .class 字节码文件 → JVM 解释执行️ 开发环境搭建核心工具JDKJava Development KitJava 开发工具包包含 JRE 运行环境和编译工具IDE代码编写工具推荐使用 IntelliJ IDEA 社区版免费或 Eclipse环境变量配置从官网下载 JDK推荐 JDK 21 LTS 长期支持版本配置JAVA_HOME指向 JDK 安装目录在Path中添加%JAVA_HOME%\bin验证安装在命令行执行java -version出现版本号即成功基础语法第一个 Java 程序// 公共类类名必须和文件名完全一致大小写相同publicclassHelloWorld{// 程序入口方法固定写法publicstaticvoidmain(String[]args){System.out.println(Hello Java!);}}新手易错点文件名必须和public类名一致否则编译报错标点符号必须为英文符号中文分号、括号会直接报错Java 严格区分大小写System不能写成system注释// 单行注释/* 多行注释 可以注释多行代码 *//** * 文档注释 * 用于生成 API 文档 */标识符命名规则由字母、数字、下划线_、$组成不能以数字开头不能是 Java 关键字如public、class、static等严格区分大小写命名规范类型规范示例变量/方法名小驼峰studentName、getAge()类名大驼峰HelloWorld、StudentInfo常量全大写下划线MAX_VALUE、PI变量与数据类型八大基本数据类型数据类型占用字节说明byte1 字节字节型范围 -128 ~ 127short2 字节短整型int4 字节整型默认整数类型long8 字节长整型字面量结尾加Lfloat4 字节单精度浮点字面量结尾加Fdouble8 字节双精度浮点默认小数类型char2 字节字符型用单引号包裹boolean—布尔型取值为true/false引用类型除基本类型外String、数组、对象等都属于引用类型变量存储的是内存地址而非值本身。intage18;// 基本类型直接存值StringnamenewString(Java);// 引用类型存的是内存地址数据类型转换自动转换隐式小类型 → 大类型如int→double强制转换显式大类型 → 小类型可能丢失精度doublea10.9;intb(int)a;// 强制转换结果为 10小数部分直接舍弃运算符常用运算符分类算术运算符、-、*、/、%取余关系运算符、!、、、、逻辑运算符短路与、||短路或、!非赋值运算符、、-、*、/自增自减、--三目运算符条件 ? 表达式1 : 表达式2易错点对基本类型比较数值对引用类型比较的是内存地址。比较字符串内容应使用equals()方法和的区别两边都会执行左边为false时右边不再执行短路特性流程控制条件语句// if-elseif(score90){System.out.println(优秀);}elseif(score60){System.out.println(及格);}else{System.out.println(不及格);}// switchswitch(day){case1:System.out.println(周一);break;case2:System.out.println(周二);break;default:System.out.println(其他);}循环语句// for 循环for(inti0;i10;i){System.out.println(i);}// while 循环while(条件){// 循环体}// do-while 循环至少执行一次do{// 循环体}while(条件);// 增强 for 循环foreachfor(intnum:array){System.out.println(num);}break立即终止最内层循环continue跳过本次迭代进入下一次循环数组一维数组// 声明与创建int[]arrnewint[5];// 动态初始化默认值为 0int[]arr2{1,2,3,4,5};// 静态初始化// 访问元素下标从 0 开始arr[0]10;System.out.println(arr.length);// 获取数组长度二维数组int[][]matrixnewint[3][4];// 3行4列int[][]matrix2{{1,2},{3,4},{5,6}};注意事项数组下标从 0 开始越界会抛出ArrayIndexOutOfBoundsException数值型默认值为0char默认值为\u0000boolean默认值为false数组赋值arr2 arr1只是复制引用两个变量指向同一数组️ 面向对象编程OOP类与对象类Class模板/蓝图定义属性和行为对象Object根据类创建的具体实例classStudent{Stringname;// 属性intage;voidstudy(){// 方法System.out.println(name正在学习);}}// 创建对象StudentsnewStudent();s.name张三;s.study();构造方法方法名与类名相同无返回值类型连void都不能写用于对象初始化可以重载如果没有自定义构造方法编译器会提供默认的无参构造一旦自定义了构造方法默认构造方法将不再存在classStudent{Stringname;intage;// 无参构造Student(){}// 有参构造Student(Stringname,intage){this.namename;this.ageage;}}封装使用private修饰属性通过getter/setter方法提供外部访问classStudent{privateStringname;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.namename;}}四大访问权限修饰符本类同包子类其他包public✅✅✅✅protected✅✅✅❌默认不写✅✅❌❌private✅❌❌❌记忆口诀权限从大到小→publicprotected 默认 private可见范围逐级缩小。继承使用extends关键字Java 只支持单继承Object类是所有类的根类子类构造方法默认第一行隐式调用super()父类无参构造子类可以重写Override父类方法但不能降低访问权限classAnimal{voideat(){System.out.println(吃东西);}}classDogextendsAnimal{Overridevoideat(){System.out.println(狗吃骨头);}}多态父类引用指向子类对象实现统一调用AnimalanewDog();// 向上转型a.eat();// 实际调用 Dog 的 eat() 方法注意静态方法不具备多态性只会调用父类的静态方法。方法重载Overloadvs 方法重写Override对比项重载重写位置同一个类中父子类之间方法名相同相同参数列表必须不同必须相同返回值可以不同相同或协变常用关键字static修饰变量为类变量、修饰方法为类方法可通过类名直接调用final修饰类表示不可继承修饰方法表示不可重写修饰变量表示常量this代表当前对象可调用成员变量、方法和构造方法super代表父类引用可调用父类成员和构造方法abstract修饰抽象类和抽象方法抽象方法没有方法体抽象类不能直接实例化异常处理try-catch-finallytry{// 可能出错的代码}catch(IOExceptione){// 处理 IO 异常}catch(SQLExceptione){// 处理数据库异常}finally{// 无论是否异常都会执行常用于关闭资源}异常分类检查异常Checked Exception编译时必须处理如IOException、SQLException运行时异常Runtime Exception编译时不强制处理如NullPointerException、ArrayIndexOutOfBoundsException自定义异常继承Exception类即可创建自定义异常classMyExceptionextendsException{publicMyException(Stringmessage){super(message);}}包与导入packagecom.example.demo;// 包声明必须在文件第一行importjava.util.Scanner;// 导入指定类importjava.util.*;// 导入包下所有类package声明只能有一条必须放在文件首行import语句放在package和类定义之间输入输出// 输出System.out.println(换行输出);System.out.print(不换行输出);// 输入ScannerscannernewScanner(System.in);intnumscanner.nextInt();Stringstrscanner.next();包装类与自动装箱/拆箱每个基本类型都有对应的包装类基本类型包装类intIntegerdoubleDoublecharCharacterbooleanBooleanbyteByteshortShortlongLongfloatFloat自动装箱基本类型 → 包装类如Integer i 10;自动拆箱包装类 → 基本类型如int n i;学习建议Java 基础是后续学习集合框架、IO 流、多线程、JDBC、Spring 等高级内容的前提。建议在学习过程中多动手编写代码通过实际项目加深理解。以上内容覆盖了 Java 基础的核心知识点适合入门学习和期末复习参考。