JavaSE总结

1. Java环境基础

JVM, JRE 和 JDK

  • JVM(Java Virtual Machine): 是 Java 虚拟机,负责执行 Java 字节码。JVM 提供了平台无关性,使得 Java 程序可以在不同操作系统上运行。
  • JRE(Java Runtime Environment): 是 Java 运行时环境,包括 JVM 和 Java 类库。JRE 是执行 Java 程序所需的基本软件包。
  • JDK(Java Development Kit): 是 Java 开发工具包,包含 JRE 和开发工具(如编译器 javac、Java 文档生成工具 javadoc 等)。用于开发和编译 Java 程序。

2. 运算符

Java 包含多种运算符,包括算术运算符、关系运算符、逻辑运算符等。例如:

  • 算术运算符: +, -, *, /, %
  • 关系运算符: ==, !=, >, <, >=, <=
  • 逻辑运算符: &&, ||, !
  • 位运算符:& | ^ ~ >> << >>>
int a = 5;  // 二进制:0101
int b = 3;  // 二进制:0011
System.out.println(a & b); // 输出 1  (二进制:0001)
System.out.println(a | b); // 输出 7  (二进制:0111)
System.out.println(a ^ b); // 输出 6  (二进制:0110)
System.out.println(~a);     // 输出 -6 (二进制:...11111010)
System.out.println(a << 1); // 输出 10  (二进制:1010)
System.out.println(a >> 1); // 输出 2   (二进制:0010)

 

3. 面向对象

3.1 三大特性

  • 封装: 将数据和方法包装在类中,通过访问控制符控制访问权限。

  • 继承: 子类继承父类的属性和方法。

  • 多态: 允许对象以多种形式存在,通常通过方法重载和重写实现。

extends关键字

在 Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以 extends 只能继承一个类。

class 父类 {
}
 
class 子类 extends 父类 {
}

        

class Animal {
    void sound() {
        System.out.println("Animal sound");
    }
}
 
class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("Bark");
    }
}

 

implements关键字

使用 implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)。

public interface A {
    public void eat();
    public void sleep();
}
 
public interface B {
    public void show();
}
 
public class C implements A,B {
}

3.2实现Java封装的步骤

 修改属性的可见性来限制对属性的访问(一般限制为private),对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问,例如:

public class Person{
    private String name;
    private int age;
​
    public int getAge(){
      return age;
    }
​
    public String getName(){
      return name;
    }
​
    public void setAge(int age){
      this.age = age;
    }
​
    public void setName(String name){
      this.name = name;
    }
}

采用 this 关键字是为了解决实例变量(private String name)和局部变量(setName(String name)中的name变量)之间发生的同名的冲突。

4.Java ArrayList 方法

Java ArrayList 常用方法列表如下:

方法描述
add()将元素插入到指定位置的 arraylist 中
addAll()添加集合中的所有元素到 arraylist 中
clear()删除 arraylist 中的所有元素
clone()复制一份 arraylist
contains()判断元素是否在 arraylist
get()通过索引值获取 arraylist 中的元素
indexOf()返回 arraylist 中元素的索引值
removeAll()删除存在于指定集合中的 arraylist 里的所有元素
remove()删除 arraylist 里的单个元素
size()返回 arraylist 里元素数量
isEmpty()判断 arraylist 是否为空
subList()截取部分 arraylist 的元素
set()替换 arraylist 中指定索引的元素
sort()对 arraylist 元素进行排序
toArray()将 arraylist 转换为数组
toString()将 arraylist 转换为字符串
ensureCapacity()设置指定容量大小的 arraylist
lastIndexOf()返回指定元素在 arraylist 中最后一次出现的位置
retainAll()保留 arraylist 中在指定集合中也存在的那些元素
containsAll()查看 arraylist 是否包含指定集合中的所有元素
trimToSize()将 arraylist 中的容量调整为数组中的元素个数
removeRange()删除 arraylist 中指定索引之间存在的元素
replaceAll()将给定的操作内容替换掉数组中每一个元素
removeIf()删除所有满足特定条件的 arraylist 元素
forEach()遍历 arraylist 中每一个元素并执行特定操

5. 多线程编程 

Java 支持多线程,通过 Thread 类和 Runnable 接口实现。

5.1 线程安全的三大特性

  • 原子性
  • 可见性
  • 有序性

5.2 线程锁与关键字

使用 synchronized 关键字实现同步,确保线程安全。

class Counter {
    private int count = 0;
 
    synchronized void increment() {
        count++;
    }
}

6. 端口与监听

  • 端口: 用于区分不同的网络应用程序。
  • 监听: 服务器通过 ServerSocket 监听特定端口的连接请求。

示例代码

// 服务器端
try (ServerSocket serverSocket = new ServerSocket(8888)) {
    Socket socket = serverSocket.accept();
    // 处理客户端请求
}
 
// 客户端
try (Socket socket = new Socket("localhost", 8888)) {
    // 发送请求
}

 

7. GUI图形界面编程

Java 提供 AWT 和 Swing 用于图形用户界面开发。

/*
 * Created by JFormDesigner on Sun Sep 29 17:23:34 CST 2024
 */
 
package com.ffyc.homework;
 
import java.awt.*;
import javax.swing.*;
 
/**
 * @author 20526
 */
public class UserLogin extends JFrame {
    private JButton loginButton;
    private JButton registerButton;
    private JPasswordField passwordField;
    private JTextField usernameField;
    private JLabel usernameLabel;
    private JLabel passwordLabel;
 
    public UserLogin() {
        super("用户登录界面");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        initComponents();
        this.setVisible(true);
 
        // 添加按钮的事件监听器
        loginButton.addActionListener(e -> System.out.println("登录成功!"));
        registerButton.addActionListener(e -> System.out.println("注册成功!"));
    }
 
    private void initComponents() {
        // 初始化组件
        loginButton = new JButton("登录");
        registerButton = new JButton("注册");
        passwordField = new JPasswordField();
        usernameField = new JTextField();
        usernameLabel = new JLabel("用户名");
        passwordLabel = new JLabel("密码");
 
        // 设置颜色
        Color backgroundColor = new Color(245, 245, 245);
        Color buttonColor = new Color(70, 130, 180);
        Color buttonHoverColor = new Color(100, 149, 237);
 
        // 设置内容面板
        Container contentPane = getContentPane();
        contentPane.setLayout(null);
        contentPane.setBackground(backgroundColor);
 
        // 设置按钮样式
        loginButton.setBackground(buttonColor);
        loginButton.setForeground(Color.WHITE);
        registerButton.setBackground(buttonColor);
        registerButton.setForeground(Color.WHITE);
 
        loginButton.setOpaque(true);
        loginButton.setBorderPainted(false);
        registerButton.setOpaque(true);
        registerButton.setBorderPainted(false);
 
        // 鼠标进入时改变按钮颜色
        loginButton.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseEntered(java.awt.event.MouseEvent evt) {
                loginButton.setBackground(buttonHoverColor);
            }
            public void mouseExited(java.awt.event.MouseEvent evt) {
                loginButton.setBackground(buttonColor);
            }
        });
 
        registerButton.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseEntered(java.awt.event.MouseEvent evt) {
                registerButton.setBackground(buttonHoverColor);
            }
            public void mouseExited(java.awt.event.MouseEvent evt) {
                registerButton.setBackground(buttonColor);
            }
        });
 
        // 设置组件位置和大小
        usernameLabel.setBounds(200, 170, 55, 40);
        usernameField.setBounds(275, 165, 200, 50);
        passwordLabel.setBounds(200, 230, 55, 40);
        passwordField.setBounds(275, 225, 200, 45);
        loginButton.setBounds(280, 295, 80, 30);
        registerButton.setBounds(400, 295, 75, registerButton.getPreferredSize().height);
 
        // 将组件添加到面板
        contentPane.add(usernameLabel);
        contentPane.add(usernameField);
        contentPane.add(passwordLabel);
        contentPane.add(passwordField);
        contentPane.add(loginButton);
        contentPane.add(registerButton);
 
        // 设置窗口大小和位置
        contentPane.setPreferredSize(new Dimension(770, 620));
        pack();
        setLocationRelativeTo(getOwner());
    }
 
    public static void main(String[] args) {
        new UserLogin();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值