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 {@Overridevoid 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();}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/55274.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈C++ 多线程锁处理

一、基本介绍 在C中&#xff0c;多线程编程同样需要处理线程安全问题&#xff0c;C11及更高版本提供了一套标准库来支持多线程编程&#xff0c;包括锁的处理。 二、常见锁处理方式 互斥锁&#xff08;std::mutex&#xff09;&#xff1a; std::mutex是最基本的锁类型&#xf…

“改善就医感受 提升患者体验”经验交流首场活动在呼市顺利举行

2024年9月26日至27日&#xff0c;以“医疗机构高质量发展 促进医改全面深化”为主题的“改善就医感受 提升患者体验”经验交流系列活动&#xff08;以下简称&#xff1a;系列活动&#xff09;首场活动在内蒙古呼和浩特顺利举行。 活动现场 患者体验&#xff0c;并不等同于患者…

网站架构部署——LAMP、LNMP

文章目录 网站架构部署——LAMP、LNMPLAMP安装顺序编译安装Apache httpd服务编译安装mysqld 服务编译安装PHP 解析环境安装论坛安装博客 LNMPyum集中式安装LNMPyum分布式安装LNMP20.0.0.50安装nginx20.0.0.51安装mysql20.0.0.52安装php20.0.0.50配置 nginx 支持 PHP 解析测试my…

CleanMyMac X v4.12.1 中文破解版 Mac优化清理工具

在数字时代&#xff0c;我们的Mac设备承载着越来越多的重要信息和日常任务。然而&#xff0c;随着时间的推移&#xff0c;这些设备可能会变得缓慢、混乱&#xff0c;甚至充满不必要的文件。这就是CleanMyMac X发挥作用的地方。 CleanMyMac X是一款功能强大的Mac优化工具&#…

获取 Jupyter Notebook IPython kernel 在电脑中的目录位置

获取 Jupyter Notebook IPython kernel 在电脑中的目录位置 正文 正文 在 VS code 的 terminal 中或者 Windows 的命令行中使用如下代码即可。 ipython locate运行后得到如下结果&#xff1a; 如图所示&#xff0c;我们获取到了 ipython 的位置。 如果大家觉得有用&#xf…

自动驾驶汽车横向控制方法研究综述

【摘要】 为实现精确、稳定的横向控制&#xff0c;提高车辆自主行驶的安全性和保障乘坐舒适性&#xff0c;综述了近年来自动驾驶汽车横向控制方法的最新进展&#xff0c;包括经典控制方法和基于深度学习的方法&#xff0c;讨论了各类方法的性能特点及在应用中的优缺点&#xff…

使用transformers调用owlv2实现开放目标检测

目录 安装Demo 安装 pip install transformersDemo from PIL import Image, ImageDraw, ImageFont import numpy as np import torch from transformers import AutoProcessor, Owlv2ForObjectDetection from transformers.utils.constants import OPENAI_CLIP_MEAN, OPENAI_…

PTA L1-079 天梯赛的善良

L1-079 天梯赛的善良&#xff08;20分&#xff09; 天梯赛是个善良的比赛。善良的命题组希望将题目难度控制在一个范围内&#xff0c;使得每个参赛的学生都有能做出来的题目&#xff0c;并且最厉害的学生也要非常努力才有可能得到高分。 于是命题组首先将编程能力划分成了 10…

Python日常搜索_random

random.random() 返回随机生成的一个实数&#xff0c;它在[0,1)范围内random.uniform random.uniform(a, b)&#xff0c;用于生成一个指定范围内的随机符点数&#xff0c;两个参数其中一个是上限&#xff0c;一个是下限。如果a > b&#xff0c;则生成的随机数n: b < n &l…

现实的谷歌SEO服务商是怎样的?

许多客户在咨询SEO服务时&#xff0c;常常会问到如何在短时间内将某个关键词推上谷歌首页&#xff0c;甚至是第一名。对于这种问题&#xff0c;专业的SEO服务商通常无言以对。SEO的基础是网站本身&#xff0c;而并非凭空捏造或者一夜之间就能实现效果的 SEO需要从网站的基本情况…

CNES实时轨道、钟差,硬件延迟精度评估

CNES实时产品评估以COD事后产品作为参考&#xff0c;采用cnt文件产品&#xff0c;目前最精确的轨道是GPS&#xff0c;但由于伽利略最稳定的原子钟弥补了伽利略轨道上的系统误差&#xff0c;Galileo的轨道钟差SISRE低于GPS,Galileo和GPS的SISRE分别为1.6cm和2.3cm&#xff0c;GL…

【HTML5】html5开篇基础(2)

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…

《深度学习》OpenCV 指纹验证、识别

目录 一、指纹验证 1、什么是指纹验证 2、步骤 1&#xff09;图像采集 2&#xff09;图像预处理 3&#xff09;特征提取 4&#xff09;特征匹配 5&#xff09;相似度比较 6&#xff09;结果输出 二、案例实现 1、完整代码 2、实现结果 调试模式&#xff1a; 三、…

基于Hadoop的微博舆情监测分析系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

Python并发之道:解锁`concurrent.futures`模块的秘密

引言 concurrent.futures模块是Python标准库的一部分&#xff0c;它提供了高层次的接口来执行异步操作。与传统的多线程或多进程编程相比&#xff0c;使用concurrent.futures可以更加简单、高效地管理并行任务。无论是对于初学者还是有经验的开发者来说&#xff0c;掌握这个模…

传统操作系统和分布式操作系统的区别

分布式操作系统和传统操作系统之间的区别&#xff0c;根植于它们各自的设计哲学和目标。要理解这些差异&#xff0c;需要从操作系统的基本定义、结构、功能以及它们在不同计算环境中的表现进行分析。每种系统都试图解决特定的计算挑战&#xff0c;因此在不同的使用场景下具有各…

C++的6种构造函数

在 C 中&#xff0c;构造函数是一种特殊的成员函数&#xff0c;用于初始化类对象。在对象创建时自动调用&#xff0c;构造函数的主要作用是分配资源、初始化数据成员等。根据不同的功能和使用场景&#xff0c;C 提供了多种类型的构造函数&#xff1a; 1. 默认构造函数 (Defaul…

【MySQL】视图、用户和权限管理

目录 视图创建视图数据修改影响删除视图视图优点 用户和权限管理查看当前的数据库拥有用户信息创建用户修改密码删除用户权限授权回收权限 视图 视图就是相当于创建一个表&#xff0c;将查询到的结果集给存储起来。像使用复杂的多表查询查询到的结果集就不可以对结果集操作。而…

揭秘网络钓鱼:如何识破并防范这场数字时代的诈骗游戏

网络钓鱼是一种网络攻击&#xff0c;它利用伪装的电子邮件欺骗收件人提供信息、下载恶意软件或采取其他期望的行动。 网络钓鱼是网络害虫&#xff0c;自20世纪90年代初从暗网出现以来&#xff0c;至今仍危害全球。根据SlashNext的报告&#xff0c;2023年平均每天有31,000次网络…

SpringCloud 2023 LoadBalancer介绍、使用、获取服务列表原理、负载均衡算法

目录 1. 介绍2. 使用3 获取服务列表原理4. 负载均衡算法 1. 介绍 功能: 提供客户端的负载均衡算法&#xff0c;将请求均摊到多个服务器上。属于客户端负载均衡(Nginx属于服务端负载均衡)&#xff0c;会将服务列表缓存到JVM本地&#xff0c;然后客户端自己选择请求服务器支持S…