ToB企服应用市场:ToB评测及商务社交产业平台

标题: java 入门教程(非常详细!1.6w+ 文字) [打印本页]

作者: 瑞星    时间: 2024-8-19 11:05
标题: java 入门教程(非常详细!1.6w+ 文字)
先序: 学习编程语言要先学个表面,刚开始只用学焦点的部分,一些细节、不常用的内容先放着,现用现查即可;把常用的东西弄熟练了在慢慢补充。
1. Java 概述

Java 是一种面向对象的编程语言,由 Sun Microsystems(如今的 Oracle)在 1995 年推出。Java 程序可以在任何支持 Java 捏造机 (JVM) 的装备上运行。Java 的焦点理念是“一次编写,随处运行”。
2. 根本语法

2.1 Java 程序结构

每个 Java 程序都由类 (class) 和方法 (method) 构成。以下是一个简朴的 Java 程序示例:
  1. public class Hello
  2. World {
  3.     public static void main(String[] args) {
  4.         System.out.println("Hello, World!");
  5.     }
  6. }
复制代码
2.2 注释

Java 支持三种范例的注释:
3. 数据范例

Java 的数据范例分为两大类:根本数据范例 (primitive types) 和引用数据范例 (reference types)。
3.1 根本数据范例

  1. int number = 10;
  2. float pi = 3.14f;
  3. char letter = 'A';
  4. boolean isJavaFun = true;
复制代码
3.2 引用数据范例

引用数据范例包罗类 (class), 接口 (interface), 数组 (array),以及枚举 (enum)。
4. 运算符

Java 提供了丰富的运算符,包罗:
  1. int a = 5;
  2. int b = 10;
  3. int sum = a + b; // 加法
  4. boolean isEqual = (a == b); // 比较
复制代码
5. 判定和循环

5.1 条件语句

  1. if (a > b) {
  2.     System.out.println("a is greater than b");
  3. } else if (a < b) {
  4.     System.out.println("a is less than b");
  5. } else {
  6.     System.out.println("a is equal to b");
  7. }
  8. switch (a) {
  9.     case 1:
  10.         System.out.println("a is 1");
  11.         break;
  12.     case 2:
  13.         System.out.println("a is 2");
  14.         break;
  15.     default:
  16.         System.out.println("a is not 1 or 2");
  17. }
复制代码
5.2 循环语句

  1. for (int i = 0; i < 5; i++) {
  2.     System.out.println(i);
  3. }
  4. int j = 0;
  5. while (j < 5) {
  6.     System.out.println(j);
  7.     j++;
  8. }
  9. int k = 0;
  10. do {
  11.     System.out.println(k);
  12.     k++;
  13. } while (k < 5);
复制代码
5.3 常用遍历方法

在 Java 中,遍历数组和字符串是常见的操作。下面详细介绍几种常用的遍历方法。
1. 遍历数组的方法

1.1 使用 for 循环

传统的 for 循环是遍历数组的常见方法:
  1. int[] numbers = {1, 2, 3, 4, 5};
  2. for (int i = 0; i < numbers.length; i++) {
  3.     System.out.println(numbers[i]);
  4. }
复制代码
这里的 i 是数组的索引,通过 numbers 获取数组元素。
1.2 使用增强型 for 循环(for-each 循环)

增强型 for 循环简化了数组的遍历,不需要使用索引:
  1. int[] numbers = {1, 2, 3, 4, 5};
  2. for (int number : numbers) {
  3.     System.out.println(number);
  4. }
复制代码
这种方法直接获取数组中的每个元素,语法简洁。
2. 遍历字符串的方法

2.1 使用 for 循环

字符串可以看作是字符数组,可以用 for 循环逐个字符地遍历:
  1. String text = "Hello";
  2. for (int i = 0; i < text.length(); i++) {
  3.     System.out.println(text.charAt(i));
  4. }
复制代码
charAt(i) 方法返回字符串中第 i 个字符。
2.2 使用增强型 for 循环(for-each 循环)

固然增强型 for 循环不能直接用于 String,但可以将字符串转换为字符数组后举行遍历:
  1. String text = "Hello";
  2. for (char ch : text.toCharArray()) {
  3.     System.out.println(ch);
  4. }
复制代码
toCharArray() 方法将字符串转换为字符数组,然后举行遍历。
2.3 使用 Stream API

同样地,可以使用 Stream API 来遍历字符串:
  1. String text = "Hello";
  2. text.chars().forEach(c -> System.out.println((char) c));
复制代码
chars() 方法返回一个包含字符的 IntStream,需要将 int 范例转换为 char 范例。
3. 其他的遍历方法

3.1 使用迭代器(Iterator)

对于聚集类(如 List、Set 等),可以使用 Iterator 举行遍历:
  1. List<String> list = Arrays.asList("A", "B", "C");
  2. Iterator<String> iterator = list.iterator();
  3. while (iterator.hasNext()) {
  4.     System.out.println(iterator.next());
  5. }
复制代码
Iterator 提供了 hasNext() 和 next() 方法,用于顺序访问聚集中的元素。
3.2 使用 forEach 方法

Java 8 引入的 forEach 方法可以直接用于遍历聚集和 Map:
  1. List<String> list = Arrays.asList("A", "B", "C");
  2. list.forEach(System.out::println);
  3. Map<Integer, String> map = new HashMap<>();
  4. map.put(1, "One");
  5. map.put(2, "Two");
  6. map.forEach((key, value) -> System.out.println(key + " = " + value));
复制代码
这种方法语法简洁,尤其适合使用 Lambda 表达式举行处理。
6. 数组

数组是雷同数据范例的聚集,可以存储固定大小的元素。
  1. int[] numbers = new int[5];
  2. numbers[0] = 1;
  3. numbers[1] = 2;
  4. // 其他元素初始化
  5. int[] primes = {2, 3, 5, 7, 11};
  6. System.out.println(primes[0]); // 输出第一个元素
复制代码
7. 面向对象编程

面向对象编程 (OOP) 是 Java 的焦点概念,以下是几个紧张的面向对象概念:
7.1 接口

接口是一种抽象范例,界说了类必须实现的方法。接口中的所有方法默认都是抽象的(没有方法体),且所有字段默认都是 public static final。
  1. interface Animal {
  2.     void eat();
  3.     void sleep();
  4. }
  5. class Dog implements Animal {
  6.     @Override
  7.     public void eat() {
  8.         System.out.println("Dog eats");
  9.     }
  10.     @Override
  11.     public void sleep() {
  12.         System.out.println("Dog sleeps");
  13.     }
  14. }
  15. public class Main {
  16.     public static void main(String[] args) {
  17.         Dog dog = new Dog();
  18.         dog.eat();
  19.         dog.sleep();
  20.     }
  21. }
复制代码
7.2 抽象类

抽象类是不能被实例化的类,可以包含抽象方法和具体方法。抽象方法必须在子类中实现。
  1. abstract class Animal {
  2.     abstract void makeSound();
  3.     public void sleep() {
  4.         System.out.println("Sleeping...");
  5.     }
  6. }
  7. class Dog extends Animal {
  8.     @Override
  9.     public void makeSound() {
  10.         System.out.println("Bark");
  11.     }
  12. }
  13. public class Main {
  14.     public static void main(String[] args) {
  15.         Dog dog = new Dog();
  16.         dog.makeSound();
  17.         dog.sleep();
  18.     }
  19. }
复制代码
7.3 继承

继承是指一个类(子类)继承另一个类(父类)的属性和方法。子类可以扩展或重写父类的方法。
  1. class Animal {
  2.     public void eat() {
  3.         System.out.println("Animal eats");
  4.     }
  5. }
  6. class Dog extends Animal {
  7.     @Override
  8.     public void eat() {
  9.         System.out.println("Dog eats");
  10.     }
  11. }
  12. public class Main {
  13.     public static void main(String[] args) {
  14.         Dog dog = new Dog();
  15.         dog.eat();
  16.     }
  17. }
复制代码
7.4 多态

多态允许同一个接口在不同的实现中表现出不同的活动。它是通过方法重载和方法重写实现的。
  1. class Animal {
  2.     public void makeSound() {
  3.         System.out.println("Some sound");
  4.     }
  5. }
  6. class Dog extends Animal {
  7.     @Override
  8.     public void makeSound() {
  9.         System.out.println("Bark");
  10.     }
  11. }
  12. class Cat extends Animal {
  13.     @Override
  14.     public void makeSound() {
  15.         System.out.println("Meow");
  16.     }
  17. }
  18. public class Main {
  19.     public static void main(String[] args) {
  20.         Animal myDog = new Dog();
  21.         Animal myCat = new Cat();
  22.         myDog.makeSound();
  23.         myCat.makeSound();
  24.     }
  25. }
复制代码
8. 输入输出 (I/O)

Java 的 I/O 库提供了丰富的类和接口,用于文件操作、数据流操作、网络通信等。
Scanner 类

Scanner 类是 Java 5 引入的,用于从各种输入源读取数据,例如控制台输入、文件、字符串等。它提供了一系列方便的方法来解析根本范例和字符串。
下面给的示例代码都是从控制台获取输入
  1. import java.util.Scanner;
  2. public class ScannerExample {
  3.     public static void main(String[] args) {
  4.         Scanner scanner = new Scanner(System.in);
  5.         System.out.print("请输入您的名字: ");
  6.         String name = scanner.nextLine(); // 读取整行输入
  7.         System.out.println("你好, " + name + "!");
  8.         System.out.print("请输入您的年龄: ");
  9.         int age = scanner.nextInt(); // 读取整数输入
  10.         System.out.println("您 " + age + " 岁了!");
  11.         scanner.close(); // 关闭 Scanner
  12.     }
  13. }
复制代码
常用方法:

BufferedReader 类

BufferedReader 类用于从字符输入流中读取文本,提供了缓冲功能以提高读取效率。它通常与 InputStreamReader 一起使用,从标准输入或文件读取数据。
使用 BufferedReader 从终端读取数据

示例代码:
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. public class BufferedReaderExample {
  5.     public static void main(String[] args) throws IOException {
  6.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  7.         System.out.print("请输入您的名字: ");
  8.         String name = reader.readLine(); // 读取整行输入
  9.         System.out.println("你好, " + name + "!");
  10.         System.out.print("请输入您的年龄: ");
  11.         int age = Integer.parseInt(reader.readLine()); // 读取整行输入并解析为整数
  12.         System.out.println("您 " + age + " 岁了!");
  13.         reader.close(); // 关闭 BufferedReader
  14.     }
  15. }
复制代码
常用方法:

对比 Scanner 和 BufferedReader

雷同点:

不同点:

8.2 文件操作

Java 提供了多种文件操作类,如 FileReader, FileWriter, BufferedReader, BufferedWriter。
读取文件

使用 BufferedReader 从文件中读取数据。
  1. import java.io.BufferedReader;
  2. import java.io.FileReader;
  3. import java.io.IOException;
  4. public class FileRead {
  5.     public static void main(String[] args) {
  6.         try (BufferedReader br = new BufferedReader(new FileReader("test.txt"))) {
  7.             String line;
  8.             while ((line = br.readLine()) != null) {
  9.                 System.out.println(line);
  10.             }
  11.         } catch (IOException e) {
  12.             e.printStackTrace();
  13.         }
  14.     }
  15. }
复制代码
写入文件

使用 BufferedWriter 将数据写入文件。
  1. import java.io.BufferedWriter;
  2. import java.io.FileWriter;
  3. import java.io.IOException;
  4. public class FileWrite {
  5.     public static void main(String[] args) {
  6.         try (BufferedWriter bw = new BufferedWriter(new FileWriter("test.txt"))) {
  7.             bw.write("Hello, World!");
  8.         } catch (IOException e) {
  9.             e.printStackTrace();
  10.         }
  11.     }
  12. }
复制代码
8.3 输出

将数据输出到控制台。
1. System.out.print()

2. System.out.println()

3. System.out.printf()

常用格式说明符

总结

9、Java 聚集框架

String常用方法

1. 创建与初始化

2. 字符串操作

3. 查找与比力

4. 更换与转换

5. 分割与连接

6. 其他

List 接口

List 是一个有序的聚集,可以包含重复元素。常用实现类有 ArrayList 和 LinkedList。
ArrayList

ArrayList 是一个基于动态数组的数据结构,提供了快速的随机访问本领。它的主要特点是:
常用方法:
示例代码:
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. public class ArrayListExample {
  4.     public static void main(String[] args) {
  5.         List<String> list = new ArrayList<>();
  6.         list.add("Apple");
  7.         list.add("Banana");
  8.         list.add("Cherry");
  9.         System.out.println("List: " + list);
  10.         System.out.println("Element at index 1: " + list.get(1));
  11.         list.set(1, "Blueberry");
  12.         System.out.println("Updated List: " + list);
  13.         list.remove(0);
  14.         System.out.println("List after removal: " + list);
  15.     }
  16. }
复制代码
LinkedList

LinkedList 是一个基于双向链表的数据结构,提供了高效的插入和删除操作。它的主要特点是:
常用方法:
示例代码:
  1. import java.util.LinkedList;
  2. import java.util.List;
  3. public class LinkedListExample {
  4.     public static void main(String[] args) {
  5.         List<String> list = new LinkedList<>();
  6.         list.add("Apple");
  7.         list.add("Banana");
  8.         list.add("Cherry");
  9.         System.out.println("List: " + list);
  10.         System.out.println("Element at index 1: " + list.get(1));
  11.         list.set(1, "Blueberry");
  12.         System.out.println("Updated List: " + list);
  13.         list.remove(0);
  14.         System.out.println("List after removal: " + list);
  15.     }
  16. }
复制代码
Set 接口

Set 是一个不包含重复元素的聚集。常用实现类有 HashSet 和 TreeSet。
HashSet

HashSet 基于哈希表实现,元素没有顺序。它的主要特点是:
常用方法:
示例代码:
  1. import java.util.HashSet;
  2. import java.util.Set;
  3. public class HashSetExample {
  4.     public static void main(String[] args) {
  5.         Set<String> set = new HashSet<>();
  6.         set.add("Apple");
  7.         set.add("Banana");
  8.         set.add("Cherry");
  9.         set.add("Apple"); // 重复元素
  10.         System.out.println("Set: " + set);
  11.         System.out.println("Set contains 'Banana': " + set.contains("Banana"));
  12.         set.remove("Banana");
  13.         System.out.println("Set after removal: " + set);
  14.     }
  15. }
复制代码
TreeSet

TreeSet 基于红黑树实现,元素是有序的。它的主要特点是:
常用方法:
示例代码:
  1. import java.util.Set;
  2. import java.util.TreeSet;
  3. public class TreeSetExample {
  4.     public static void main(String[] args) {
  5.         Set<String> set = new TreeSet<>();
  6.         set.add("Banana");
  7.         set.add("Apple");
  8.         set.add("Cherry");
  9.         System.out.println("Set: " + set);
  10.         System.out.println("Set contains 'Banana': " + set.contains("Banana"));
  11.         set.remove("Banana");
  12.         System.out.println("Set after removal: " + set);
  13.     }
  14. }
复制代码
Map 接口

Map 是一个键值对的聚集,每个键最多只能关联一个值。常用实现类有 HashMap 和 TreeMap。
HashMap

HashMap 基于哈希表实现,键值对没有顺序。它的主要特点是:
常用方法:
示例代码:
  1. import java.util.HashMap;
  2. import java.util.Map;
  3. public class HashMapExample {
  4.     public static void main(String[] args) {
  5.         Map<String, Integer> map = new HashMap<>();
  6.         map.put("Apple", 1);
  7.         map.put("Banana", 2);
  8.         map.put("Cherry", 3);
  9.         System.out.println("Map: " + map);
  10.         System.out.println("Value for 'Banana': " + map.get("Banana"));
  11.         map.remove("Banana");
  12.         System.out.println("Map after removal: " + map);
  13.     }
  14. }
复制代码
TreeMap

TreeMap 基于红黑树实现,键值对是有序的。它的主要特点是:
常用方法:
示例代码:
  1. import java.util.Map;
  2. import java.util.TreeMap;
  3. public class TreeMapExample {
  4.     public static void main(String[] args) {
  5.         Map<String, Integer> map = new TreeMap<>();
  6.         map.put("Banana", 2);
  7.         map.put("Apple", 1);
  8.         map.put("Cherry", 3);
  9.         System.out.println("Map: " + map);
  10.         System.out.println("Value for 'Banana': " + map.get("Banana"));
  11.         map.remove("Banana");
  12.         System.out.println("Map after removal: " + map);
  13.     }
  14. }
复制代码
Queue 接口

Queue 是一个先进先出的聚集,常用实现类有 LinkedList 和 PriorityQueue。
LinkedList

LinkedList 实现了 Queue 接口,提供了基于链表的队列实现。它的主要特点是:
常用方法:
示例代码:
  1. import java.util.LinkedList;
  2. import java.util.Queue;
  3. public class QueueExample {
  4.     public static void main(String[] args) {
  5.         Queue<String> queue = new LinkedList<>();
  6.         queue.add("Apple");
  7.         queue.offer("Banana");
  8.         queue.add("Cherry");
  9.         System.out.println("Queue: " + queue);
  10.         System.out.println("Head of the queue: " + queue.peek());
  11.         queue.remove();
  12.         System.out.println("Queue after removal: " + queue);
  13.         queue.poll();
  14.         System.out.println("Queue after poll: " + queue);
  15.     }
  16. }
复制代码
PriorityQueue

PriorityQueue 是一个基于优先级堆(最小堆或最大堆)的队列,元素按天然顺序或自界说顺序排序。它的主要特点是:
常用方法与 LinkedList 雷同:
示例代码:
  1. import java.util.PriorityQueue;
  2. import java.util.Queue;
  3. public class PriorityQueueExample {
  4.     public static void main(String[] args) {
  5.         Queue<String> queue = new PriorityQueue<>();
  6.         queue.add("Banana");
  7.         queue.offer("Apple");
  8.         queue.add("Cherry");
  9.         System.out.println("PriorityQueue: " + queue);
  10.         System.out.println("Head of the queue: " + queue.peek());
  11.         queue.remove();
  12.         System.out.println("PriorityQueue after removal: " + queue);
  13.         queue.poll();
  14.         System.out.println("PriorityQueue after poll: " + queue);
  15.     }
  16. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4