在学习 Java 的这段时间里,我深刻体会到了这门编程语言的强大与魅力。Java 作为一种广泛应用于企业级开发的编程语言,具有高度的通用性、稳定性和可扩展性。
首先,Java 的语法相对严谨和规范。从基本的数据类型、变量声明,到控制结构如条件语句和循环语句,每一个语法点都需要准确理解和运用。这培养了我严谨的编程思维和良好的代码习惯。在编写代码的过程中,我逐渐学会了如何组织代码结构,使其更具可读性和可维护性。
Java的由来
Java的语言是右Sun公司于1995年5月23日正式推出的面向对象的程序语言设计,集安全性、简易性、易用性和平台无关性于一身,适合网络环境下编程使用。
Java版本选择
在JDK版本的选择上,尽量选择长期维护的版本,不要使用最新版本的。企业里面需要长期支持版本,因为企业的项目需要稳定的开发环境。而新版本的JDK,新功能没有经过生产环境的验证
长期维护的版本:JDK8,JDK11,JDK17。目前应用最多、社区最活跃的版本是JDK8。到现在,JDK8仍然是主流。
Spring boot 3.0于2022年11月正式发布,官方明确宣布对JDK的要求最低是17。
jdk下载:Java Downloads | Oracle 中国
面向对象编程(OOP)的概念是 Java 的核心。通过学习类、对象、继承、多态等特性,我明白了如何将现实世界中的问题抽象为程序中的类和对象,并通过它们之间的交互来实现复杂的功能。这种编程思想的转变让我能够更有效地设计和构建大型的软件系统。
Java语言特点:简单性、面向对象、分布性、平台无关性、多线程。
下面是Java的数据类型:
整型 | byte,short,int,long | |
浮点型 | float,double | |
字符型 | char | |
布尔型 | boolean |
基本数据类型
数据类型 | 所占字节 | 表示范围 |
byte(字节类型) | 1 | -128~127 |
short(短整型) | 2 | -32768~32767 |
int(整型) | 4 | -2147483648~2147483647 |
long(长整型) | 8 | -9223372036854775808~9223372036854775807 |
float(单精度) | 4 | |
double(双精度) | 8 | |
char(字符) | 2 | 一个字符 |
boolean(布尔) | 1 | true或false |
Java语言采用Unicode字符集,它由16位数组成,整个字符集包含有65535个字符,不会由于使用不同的系统而产生符号表示方法的不统一。而通常采用的ASCII码也被包含其中。
Java符号分为:关键字、标识符、运算符和分隔符。
关键字:
标识符:
Java中基本类型可以进行混合运算,不同类型的数据在运算过程中,首先会自动转换为同一类型,再进行运算。数据类型根据占用存储空间的大小分为高低不同的级别,占用空间小的级别低,占用空间大的级别高。
源类型 | 目的类型 |
byte | short、int、long、float、double |
short | int、long、float、double |
int | long、float、double |
long | float、double |
float | double |
char | int、long、float、double |
控制台输出语句:
System.out.println(内容):输出内容后换行
System.out.print(内容):输出内容后不换行
System.out.printf(“格式字符串”,输出列表):按指定格式输出,不换行
格式化输出语句:
System.out.printf(“格式字符串”,iteml,item2,...,itemk)
使用Scanner获取输入:
在类的外面,代码行顶部引入包(可以自动引入包,只做一次)
import java.util.Scanner
创建扫描器对象
Scanner 对象名=new Scanner(System.in)
根据数据类型调用相应的读取输出的方法,如
对象名.nextLine():读入字符串
对象名.nextInt():读入整数值
对象名.nextDouble():读入double类型值
将读取到的结果赋予相关变量
程序举例:
给定长方形的长和宽,计算面积
import java.util.Scanner;
public class SquareArea{
public static void main(String[] args){
//1.读入长和宽
Scanner scan=new Scanner(System.in);
System.out.printIn(“请输入长方形的长:");
int length=scan.nextInt();
System.out.println("请输入长方形的宽:");
int width=scan.nextInt();
//2.计算长方形的面积
int area=length*width;
//3.输出计算结果
System.out.println("长方形的面积为:"+area);
}
}
输出结果:
在 Java 中,类是一种用户自定义的数据类型,用于描述具有相同属性和行为的一组对象。
类的定义通常包含以下部分:
public class 类名 {
// 成员变量(属性)
数据类型 变量名;
// 构造方法(用于创建对象时的初始化)
public 类名(参数列表) {
// 初始化成员变量的代码
}
// 成员方法(行为)
返回值类型 方法名(参数列表) {
// 方法的具体实现代码
}
}
对象的创建过程如下:
首先使用 new
关键字,后跟类的构造方法来创建对象。例如,如果有一个名为 Person
的类,其构造方法不需要参数,可以这样创建对象:
Person person = new Person();
如果构造方法有参数,则需要提供相应的参数值,例如:
Person person = new Person("张三", 20);
通过创建对象,就可以访问和调用类中定义的成员变量和成员方法,来实现特定的功能。
在 Java 中,继承是面向对象编程的一个重要特性。
继承允许一个类(子类)继承另一个类(父类)的属性和方法。
通过关键字 extends
来实现继承,例如:
class 子类名 extends 父类名 {
// 子类特有的属性和方法
}
子类可以继承父类的非私有成员(包括成员变量和成员方法),从而实现代码的复用。
子类还可以重写父类的方法,即在子类中重新定义与父类中同名、同参数列表的方法,以实现特定于子类的行为。
例:
继承的主要优点包括:
- 减少代码冗余:父类中的通用属性和方法无需在子类中重复定义。
- 便于代码维护:对父类的修改可以自动反映到子类中。
- 增强代码的可扩展性:通过继承可以方便地扩展和定制功能。
但继承也并非毫无限制,过度使用继承可能导致代码的耦合度过高,不利于维护和扩展。
在 Java 中,抽象类是一种不能被实例化的类。
抽象类使用 abstract
关键字来修饰。
抽象类中可以包含抽象方法和非抽象方法。
抽象方法是只有方法声明,没有方法体的方法,使用 abstract
关键字修饰。
例如:
abstract void abstractMethod();
抽象类的主要作用是为其子类提供一个公共的模板,规定子类必须实现的某些方法。
子类继承抽象类后,如果父类中有抽象方法,那么子类必须实现这些抽象方法,否则子类也必须声明为抽象类。
抽象类通常用于表示具有某些共同特征但又无法直接实例化的概念或对象。
以上是我分享的一些Java的小知识点。
实践是学习 Java 的关键。通过完成一个个实际的项目和练习,我不仅巩固了所学的理论知识,还提高了解决实际问题的能力。在遇到问题时,查阅文档、搜索网络资源以及向他人请教,都让我不断积累经验,拓宽了自己的知识面。
然而,学习 Java 并非一帆风顺。有时候会遇到一些难以理解的概念和复杂的逻辑,导致代码出现错误。但正是这些挫折让我更加深入地思考问题,不断调试和改进代码,从而提高了自己的编程技能。
总的来说,学习 Java 是一个充满挑战和乐趣的过程。它不仅让我掌握了一门实用的编程语言,还培养了我的逻辑思维能力、问题解决能力和团队合作精神。我相信,在今后的学习和工作中,Java 将继续发挥重要作用,帮助我实现更多的目标。