Java基础
Java 是一门简单、安全、可移植、面向对象、高性能、健壮的编程语言。其语法易于阅读和编写,是开发企业级应用的首选语言之一。
Java 变量和数据类型
Java 有八种基本数据类型,分别为 byte
、short
、int
、long
、float
、double
、char
和 boolean
。变量是用于存储数据的存储空间,可以为变量指定数据类型。在 Java 中,变量有局部变量、类变量和实例变量。
public class Test {
// Java 中的类变量
static int count = 0;
// Java 中的实例变量
String name;
public void run() {
// Java 中的局部变量
int i = 0;
}
}
Java 流控制语句
Java 中的流控制语句包括 if/else
、switch
、for
、while
和 do/while
语句。
public class Test {
public static void main(String[] args) {
// if/else语句
int num = 10;
if (num > 0) {
System.out.println("num is positive");
} else {
System.out.println("num is zero or negative");
}
// switch语句
int dayOfWeek = 3;
switch (dayOfWeek) {
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
break;
default:
System.out.println("Other day");
break;
}
// for循环
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
// while循环
int i = 0;
while (i < 10) {
System.out.println(i);
i++;
}
// do/while循环
int j = 0;
do {
System.out.println(j);
j++;
} while (j < 10);
}
}
Java 面向对象编程
Java 是一门面向对象的编程语言,其基本概念包括类、对象、继承、封装和多态。
Java 类的定义
Java 通过 class
关键字定义类,类中包含属性和方法。
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void sayHello() {
System.out.println("Hello, my name is " + name + ", I'm " + age + " years old.");
}
}
Java 对象的创建和使用
Java 通过 new
关键字创建对象,并通过点操作符访问对象的属性和方法。
public class Test {
public static void main(String[] args) {
Person person = new Person("Tom", 20);
person.sayHello();
}
}
Java 继承
Java 使用 extends
关键字实现继承。
public class Student extends Person {
private String school;
public Student(String name, int age, String school) {
super(name, age);
this.school = school;
}
public void sayHello() {
System.out.println("Hello, my name is " + name + ", I'm " + age + " years old, and I study at " + school + ".");
}
}
Java 封装
Java 通过访问修饰符实现封装,将类的属性和方法隐藏起来,只允许通过公共方法进行访问。
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
Java 多态
Java 通过方法重写和方法重载实现多态。
public class Animal {
public void move() {
System.out.println("I'm moving");
}
}
public class Dog extends Animal {
public void move() {
System.out.println("I'm running");
}
public void bark() {
System.out.println("Woof!");
}
}
public class Test {
public static void main(String[] args) {
Animal animal1 = new Animal();
Animal animal2 = new Dog();
animal1.move();
animal2.move();
Dog dog = new Dog();
dog.bark();
}
}
Java 高级特性
Java 还有许多高级特性,如异常处理、反射、注解、泛型、并发编程等。
Java 异常处理
Java 通过 try/catch/finally
语句处理异常。
public class Test {
public static void main(String[] args) {
try {
// 可能抛出异常的代码
} catch (Exception ex) {
// 异常处理代码
} finally {
// finally代码块中的代码始终会被执行
}
}
}
Java 反射
Java 反射可以在程序运行时动态获取类的信息,并且创建类的对象、调用类的方法和访问类的属性。
public class Test {
public static void main(String[] args) throws Exception {
// 获取类的信息
Class<?> clazz = Class.forName("java.lang.String");
System.out.println("Class name: " + clazz.getName());
// 创建类的对象
Object obj = clazz.newInstance();
// 调用类的方法
Method method = clazz.getMethod("toUpperCase");
String result = (String) method.invoke(obj);
System.out.println("Result: " + result);
// 访问类的属性
Field field = clazz.getDeclaredField("value");
field.setAccessible(true);
char[] value = (char[]) field.get(obj);
value[0] = 'H';
System.out.println("Modified string: " + obj);
}
}
Java 注解
Java 注解是一种在程序代码中添加元数据的方式,它可以用于描述类、属性、方法和参数。
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Range {
int min() default 0;
int max() default 100;
}
public class Person {
@Range(min = 18, max = 60)
private int age;
public void setAge(int age) {
this.age = age;
}
}
public class Test {
public static void main(String[] args) throws Exception {
Field field = Person.class.getDeclaredField("age");
Range range = field.getAnnotation(Range.class);
System.out.println("Min: " + range.min());
System.out.println("Max: " + range.max());
}
}
Java 泛型
Java 泛型是一种将类型参数化的方式,它可以在编译时检查类型的合法性,并且在运行时不会出现类型转换异常。
public class Stack<T> {
private List<T> list = new ArrayList<T>();
public void push(T element) {
list.add(element);
}
public T pop() {
int index = list.size() - 1;
T element = list.get(index);
list.remove(index);
return element;
}
}
public class Test {
public static void main(String[] args) {
Stack<String> stack = new Stack<String>();
stack.push("hello");
stack.push("world");
System.out.println(stack.pop());
System.out.println(stack.pop());
}
}
Java 并发编程
Java 并发编程可以提高程序的效率和性能,但同时也会带来一些线程安全的问题,如死锁和数据竞争等。
public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
return count;
}
}
public class Test {
public static void main(String[] args) throws Exception {
Counter counter = new Counter();
Thread thread1 = new Thread(new Runnable() {
public void run() {
for (int i = 0; i < 1000000; i++) {
counter.increment();
}
}
});
Thread thread2 = new Thread(new Runnable() {
public void run() {
for (int i = 0; i < 1000000; i++) {
counter.increment();
}
}
});
thread1.start();
thread2.start();
thread1.join();
thread2.join();
System.out.println(counter.getCount());
}
}
总结
Java 是一门功能强大、适用广泛的编程语言,其高度的可移植性和丰富的开发库为开发者提供了快速开发企业级应用的能力。开发者应该扎实掌握 Java 的基础知识和面向对象编程思想,并深入学习 Java 的高级特性,如异常处理、泛型和并发编程等。