Java是一种面向对象的编程语言,由Sun Microsystems(现为Oracle)于1995年推出。它设计之初的目标是“编写一次,到处运行”,意味着Java程序可以在任何平台上运行,只要该平台安装了Java虚拟机(JVM)。
Java平台主要由以下两部分组成:
安装JDK是进行Java开发的基础步骤。你可以从Oracle官网或者OpenJDK官网下载对应的JDK版本进行安装。
安装JDK后,需要配置环境变量来让系统知道JDK的位置。
JAVA_HOME
环境变量,指向JDK的安装路径。Path
变量中添加%JAVA_HOME%\bin
。Java开发中,IDE是开发的利器,提供了很多便利的功能,比如代码提示、调试、版本控制等。常见的IDE包括:
Java的数据类型可以分为两大类:
byte
、short
、int
、long
float
、double
char
boolean
Java常用的运算符有:
+
、-
、*
、/
、%
==
、!=
、>
、<
、>=
、<=
&&
、||
、!
&
、|
、^
、~
、<<
、>>
=
、+=
、-=
、*=
、/=
、%=
instanceof
、三元运算符?:
条件语句:
if (condition) {
// code
} else {
// code
}
循环语句:
for (int i = 0; i < 10; i++) {
// code
}
while (condition) {
// code
}
do {
// code
} while (condition);
方法是执行特定任务的代码块,Java的方法定义格式如下:
returnType methodName(parameters) {
// method body
}
new
关键字创建。class Car {
String color;
int speed;
void drive() {
// method implementation
}
}
Car car = new Car();
car.color = "Red";
car.speed = 120;
car.drive();
封装是指将数据(属性)和操作数据的方法(行为)包装在一个类中,并隐藏其内部实现细节。通过访问修饰符(如private
、public
)来实现封装。
class Person {
private String name; // 私有属性
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
继承是面向对象的一个重要特性,允许一个类继承另一个类的属性和方法。
class Animal {
void eat() {
System.out.println("Animal is eating");
}
}
class Dog extends Animal {
void bark() {
System.out.println("Dog is barking");
}
}
Dog dog = new Dog();
dog.eat();
dog.bark();
多态是指同一个方法调用不同的对象时,表现出不同的行为。Java通过方法重载和方法重写实现多态。
class Animal {
void sound() {
System.out.println("Animal sound");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("Bark");
}
}
Animal animal = new Dog();
animal.sound(); // 输出: Bark
abstract class Shape {
abstract void draw();
}
class Circle extends Shape {
void draw() {
System.out.println("Drawing Circle");
}
}
interface Animal {
void eat();
}
class Dog implements Animal {
public void eat() {
System.out.println("Dog is eating");
}
}
String类用于处理字符串,具有很多常用的方法,如length()
、substring()
、indexOf()
等。
String str = "Hello, World!";
int len = str.length(); // 获取字符串长度
String sub = str.substring(0, 5); // 获取子字符串
Java 8引入了java.time
包,提供了更现代和更易用的日期和时间处理方式。
LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();
LocalDateTime dateTime = LocalDateTime.now();
Java提供了丰富的集合类,如ArrayList
、HashSet
、HashMap
等,支持存储和操作对象集合。
List<String> list = new ArrayList<>();
list.add("Hello");
list.add("World");
Set<String> set = new HashSet<>();
set.add("Java");
set.add("Python");
Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
Java的IO流处理分为字节流和字符流,常见的类有FileInputStream
、BufferedReader
、PrintWriter
等。
BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
String line = reader.readLine();
reader.close();
Java中的异常分为两种类型:
IOException
。NullPointerException
。使用try-catch
语句捕获异常,throw
语句抛出异常。
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("Error: " + e.getMessage());
}
Java提供了Thread
类和Runnable
接口来创建和启动线程。
class MyThread extends Thread {
public void run() {
System.out.println("Thread running");
}
}
MyThread thread = new MyThread();
thread.start();
为了避免线程间的竞争条件,可以使用synchronized
关键字来保证线程安全。
synchronized (this) {
// thread-safe code
}
Java的ExecutorService
提供了线程池来管理线程。
ExecutorService executor = Executors.newFixedThreadPool(10);
executor.submit(() -> {
System.out.println("Task executed");
});
Java还提供了ConcurrentHashMap
、CopyOnWriteArrayList
等线程安全的集合,以及CountDownLatch
、CyclicBarrier
等工具类来简化并发编程。
JVM负责执行字节码,管理内存、执行垃圾回收等。它包含以下几个主要部分:
JVM自动管理内存,通过垃圾回收机制回收不再使用的对象。
JVM通过类加载器加载字节码,并根据需要在运行时加载类。
设计模式是软件设计中的最佳实践,常见的设计模式包括:
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
interface Shape {
void draw();
}
class Circle implements Shape {
public void draw() {
System.out.println("Drawing Circle");
}
}
class ShapeFactory {
public Shape getShape(String shapeType) {
if (shapeType == null) return null;
if (shapeType.equalsIgnoreCase("CIRCLE")) {
return new Circle();
}
return null;
}
}
通过对以上Java基础知识的深入了解,可以帮助开发者在实际项目中更好地应用Java语言,提高编程效率和代码质量。