Java知识点重点拓展

1.2 Java语言的特点

        Java语言的广泛应用主要得益于它的核心特点,主要包括跨平台性、面向对象特性、安全性等。

特性描述
跨平台性Java能够在多种操作系统上运行,这得益于JVM(Java虚拟机)。只要设备安装了对应的JVM,Java程序就可以在其上运行。
面向对象Java是一种面向对象的编程语言。这意味着你可以创建包含属性和方法的对象,并通过对象的交互来实现复杂功能。
安全性Java为网络编程提供了许多安全特性,包括对源代码的加密,并且在运行时检查类的
1.3 Java开发环境的搭建

        Java开发环境的搭建是Java学习的第一步,主要包括安装JDK(Java开发工具包)和配置环境变量。

步骤描述
安装JDKJDK是包含了JRE(Java运行环境)和开发工具(如编译器和调试器)的软件包。
配置环境变量环境变量是让系统知道如何找到Java命令和库的方式。通常需要设置JAVA
1.4 第一个Java程序

        编写第一个Java程序时,通常从最简单的输出开始,这里我们以“Hello, World!”为例。

// "HelloWorld.java" 示例代码
public class HelloWorld {// 主函数,Java 程序入口点public static void main(String[] args) {// 输出字符串到控制台System.out.println("Hello, World!");}
}
步骤描述
创建类使用 class 关键字定义一个类,类名的首字母应大写。
编写主函数main 方法是程序的入口,是程序开始执行的地方。
输出信息使用 System.out.println 在控制台打印信息。

        进阶用法介绍:掌握基本的输入输出操作后,可以学习复杂的 I/O 流操作,包括文件读写,序列化和网络通信。此外,了解执行时异常处理也是进阶重要的一步。

1.5 Java程序编程规范

        遵循Java编程规范能够提高代码的可读性和可维护性。

// Java 编程规范示例代码/*** Calculator 类用于执行基本的数学运算。* 类命名使用大驼峰命名法。*/
public class Calculator {/*** 常量命名使用全大写字母和下划线分隔。*/public static final String NAME = "Simple Calculator";/*** 方法命名使用小驼峰命名法,方法名应当清晰表达其功能。*/public int add(int number1, int number2) {// 方法内的注释用于解释复杂的逻辑   return number1 + number2; // 返回两个数字的和}
}
规范类型描述
类命名规范使用大写字母开始,后续每个单词首字母大写。
方法命名规范使用小写字母开始,后续每个单词首字母大写。
常量命名规范全部使用大写字母,并在单词之间使用下划线分隔。
2.1 关键字和标识符

        在Java中,关键字是预定义的保留字,具有特殊的意义;而标识符是程序员自定义的名字,用于变量、方法、类等的命名。

// 关键字和标识符示例代码public class Student {// 'public', 'class' 是Java关键字// 'Student', 'studentName', 'printStudentName' 是标识符String studentName;// 'void' 是关键字,表示函数不返回任何值public void printStudentName() {System.out.println(studentName);}
}
类型描述
关键字Java预定义的单词,如 publicstaticvoid
标识符用户自定义的名称,需要遵守命名规则,不能使用关键字。
2.2 变量与常量

        变量和常量是Java中存储数据的基本单元,变量的值可以改变,而常量的值定义后不可更改。

// 变量与常量的示例代码
public class VariableAndConstant {// 声明一个变量int age = 18;// 声明一个常量,一般使用 final 关键字修饰,且常量名大写final String NAME = "张三";public void updateAge() {// 修改变量age = 20;// 以下常量赋值会导致编译错误,因为常量不能被改变// NAME = "李四";}
}
类型描述
变量可变的存储单元,可以在程序执行过程中改变其值。
常量使用 final 关键字声明,一旦赋初值后不可更改。

进阶用法介绍:

        在Java编程中,变量和常量的高级用法涉及到更深层次的理解和运用。例如,变量的作用域决定了在哪个部分的代码中可以访问到该变量,而生命周期则与变量在内存中存在的时间有关。变量的作用域可以是类级(成员变量)、方法级(局部变量)、块级(比如在if或for循环中定义的变量),或者是线程生命周期内(ThreadLocal变量)。

        装箱和拆箱是Java中特有的概念,指自动地将基本数据类型转换为相应的包装器类型(装箱),以及将包装器类型转换回基本数据类型(拆箱)。不变设计模式(Immutable Design Pattern)涉及到创建不可变的对象,确保对象一旦被创建后就不能被修改。这种模式有助于创建更加安全和简洁的代码,并容易进行多线程编程,因为不可变对象本身是线程安全的。

// 进阶变量与常量的示例代码
public class AdvancedVariableAndConstant {// 类级变量(静态变量),与类一起加载,在程序整个运行期间都存在private static int classVariable = 0;// 在方法中定义的局部变量,仅在方法调用时存在public void localVariableExample() {int localVariable = 1;}// 不变对象示例,创建后其状态不能被改变public final static String IMMUTABLE_STRING = "不可变字符串";// 装箱:将int基本类型转化为Integer对象类型int primitive = 100;Integer wrappedInteger = primitive; // 装箱// 拆箱:将Integer对象类型转化为int基本类型int unboxedInteger = wrappedInteger; // 拆箱
}
高级用法描述
变量作用域确定变量可以被访问的代码范围。
变量生命周期变量从创建到销毁的过程。
装箱与拆箱自动类型转换,基本数据类型与对象类型之间的转换。
不变设计模式一种创建不可变对象的设计模式,用于创建线程安全和不可修改的对象。
2.3 数据类型

        Java是静态类型语言,数据类型定义了变量可以存储的数据种类和范围。

// 数据类型的示例代码
public class DataTypes {// 基本数据类型int intNum = 100;            // 整数float floatNum = 10.99f;     // 单精度浮点数double doubleNum = 3.14159;  // 双精度浮点数char letter = 'A';           // 字符boolean flag = true;         // 布尔// 对象数据类型(类)String text = "Hello Java";  // 字符串
}
数据类型描述
基本数据类型包括整数、浮点数、字符和布尔等类型,直接存储值。
对象数据类型类的实例,通过引用来操作,例如字符串。
2.5 程序控制结构

        程序控制结构决定了程序的流程,包括分支结构如 ifelse、循环结构如 forwhile

// 程序控制结构的示例代码
public class ControlStructure {public void checkNumber(int number) {// 分支结构if (number > 0) {System.out.println("数字正数");} else {System.out.println("数字非正数");}// 循环结构for (int i = 0; i < 5; i++) {System.out.println(i);}}
}
控制结构描述
分支结构根据条件执行不同的代码路径。
循环结构重复执行一段代码直至满足退出条件。
3.1 数组概述

        数组在Java中是用来存储固定大小的同类型元素的集合。

// 数组概述示例代码
public class ArrayExample {public void arrayDemo() {// 声明一个整型数组int[] numbers = {10, 20, 30, 40, 50};// 遍历数组并打印元素for (int i = 0; i < numbers.length; i++) {System.out.println(numbers[i]);}}
}
概念描述
数组声明定义数组的类型和名称,可以初始化数组。
数组遍历使用循环结构去访问数组中的每个元素。
数组长度属性 length 用来获得数组的大小。

进阶用法介绍:

        数组的高级功能涉及多维数组的使用、数组和集合之间的转换、利用Java的集合框架进行动态数组的操作,以及对数组进行高效排序和搜索等操作。

        多维数组:在Java中,除了一维数组,还可以创建多维数组,如二维数组通常被用于表示矩阵或者表格数据。

// 多维数组示例代码
public class MultiDimensionalArray {public void multiArrayDemo() {// 声明一个二维数组int[][] matrix = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};// 访问二维数组中的元素for (int i = 0; i < matrix.length; i++) {for (int j = 0; j < matrix[i].length; j++) {System.out.print(matrix[i][j] + " ");}System.out.println(); //新的一行}}
}

        Java集合框架:对于更复杂的数据结构操作,可以使用Java的集合框架,如 ArrayList 和 HashMap 提供了动态的、可以改变大小的数组。

// Java集合框架示例代码
import java.util.ArrayList;
import java.util.HashMap;public class CollectionExample {public void collectionDemo() {// 创建ArrayListArrayList<Integer> numberList = new ArrayList<>();numberList.add(10);numberList.add(20);// 创建HashMapHashMap<String, Integer> nameToAge = new HashMap<>();nameToAge.put("张三", 30);nameToAge.put("李四", 40);}
}

        数组的高级排序与搜索:使用如排序算法 Arrays.sort() 和搜索算法 Arrays.binarySearch() 可以对数组进行高效的排序和搜索。

// 数组高级排序与搜索示例代码
import java.util.Arrays;public class ArrayAdvancedOperations {public void advancedArrayDemo() {// 标准数组排序int[] numbers = {40, 10, 20, 30};Arrays.sort(numbers);// 用二分搜索法在数组中搜索值,前提是数组已经排序int index = Arrays.binarySearch(numbers, 30);System.out.println("Index of 30: " + index);}
}
高级功能描述
多维数组可以用来表示多维数据结构,例如矩阵。
Java集合框架动态数组和映射,用于在程序运行时动态存储元素。
高级排序与搜索利用Java提供的工具类对数组进行高效的排序和搜索。
4.2 类

        类是Java面向对象程序设计的基础,是创建对象的蓝图或原型。

// 类的示例代码
public class Book {// 实例变量(属性)private String title;private String author;private int year;// 类构造器public Book(String title, String author, int year) {this.title = title;this.author = author;this.year = year;}// 实例方法public void displayInfo() {System.out.println("Book: " + title + ", Author: " + author + ", Year: " + year);}
}
概念描述
类定义包含属性和方法的模板定义。
构造器特殊的方法,用于在创建对象时初始化对象。
实例变量在类中定义,为每个对象实例保留其独有的状态。
实例方法属于对象的方法,能够访问对象的状态和行为。
第五章 继承与多态

        继承允许一个类继承另一个类的属性和方法,而多态允许子类重写父类的方法。

// 继承与多态示例代码// 父类
class Animal {public void makeSound() {System.out.println("Some sound");}
}// 子类
class Dog extends Animal {// 重写方法(多态)@Overridepublic void makeSound() {System.out.println("Bark bark");}
}public class TestInheritance {public static void main(String[] args) {Dog myDog = new Dog();myDog.makeSound(); // 输出: Bark bark}
}
概念描述
继承使用 extends 关键字,子类获得父类的属性和方法。
方法重写子类提供父类方法的特定实现。
类型转换子类对象可以被视为是父类的实例,反之不行。
第六章 抽象类与接口

        抽象类和接口都不能实例化,用于声明类的某些行为,具体实现由子类完成。

// 抽象类与接口示例代码// 抽象类
abstract class Shape {String color;// 抽象方法abstract double area();public String getColor() {return color;}
}// 接口
interface Drawable {void draw();
}// 子类
class Circle extends Shape implements Drawable {double radius;Circle(double radius) {this.radius = radius;}// 实现抽象方法@Overridedouble area() {return Math.PI * radius * radius;}// 实现接口方法@Overridepublic void draw() {System.out.println("Drawing Circle");}
}
概念描述
抽象类使用 abstract 关键字声明,可以包含抽象方法和具体方法。
接口使用 interface 关键字声明,只能包含抽象方法(Java 8之前)。
实现子类使用 extends 关键字继承抽象类,使用 implements 关键字实现接口。

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

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

相关文章

MySQL Server 8.3.0 重要变更解析

MySQL Server 8.3.0 Innovation 版本是 MySQL 8.x 系列最后一个创新版本&#xff0c;下个月即将迎来 MySQL 8.4.0 LTS 长期支持版本。 关于发版模型变更&#xff0c;在之前的文章 重磅&#xff01;MySQL 8.1.0 已来&#xff01; 中已有所介绍。 这里补充一点&#xff0c;对于 M…

Java反序列化JDK动态代理的关系

Java代理模式 为什么要学习代理模式&#xff1f;了解开发原理&#xff0c;才能明白漏洞的产生。这不仅仅是SpringAOP的底层&#xff01; [SpringAOP 和 SpringMVC] 代理模式的分类&#xff1a; 静态代理动态代理 静态代理 角色分析&#xff1a; 抽象角色&#xff1a;一般会…

A Simple Problem with Integers(线段树)

目录 描述 输入 输出 样例输入 样例输出 思路 建树 第一次错误解法&#xff08;正确解法在下面&#xff0c;可跳过这一步&#xff09; 正确解法 code 描述 You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of …

java中的单例模式

一、描述 单例模式就是程序中一个类只能有一个对象实例 举个例子: //引出单例模式&#xff0c;一个类中只能由一个对象实例 public class Singleton1 {private static Singleton1 instance new Singleton1();//通过这个方法来获取实例public static Singleton1 getInstance…

【文献分享】通过形态扫描仪阐明自组装肽聚集:蛋白质-肽结构表征的新工具

题目&#xff1a;Elucidating Self‐Assembling Peptide Aggregation via Morphoscanner: A New Tool for Protein‐Peptide Structural Characterization 通过形态扫描仪阐明自组装肽聚集&#xff1a;蛋白质-肽结构表征的新工具 自组装和分子折叠在自然界中无处不在&#xff…

你该选择哪个职业呢?数据科学家、数据分析师和数据工程师

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

CQ 社区版2.10.0 | 新增 SQL 审核、全新英文版上线…

三月中旬&#xff0c;我们预告了 CloudQuery 社区版即将上线的「SQL 审核」功能。现在&#xff0c;它来了&#xff01; 本次社区版 v2.10.0&#xff0c;除了 SQL 审核功能&#xff0c;我们还在手动授权、连接分组等模块做了新功能和优化。 新增功能 新增 SQL 审核功能 支持…

路径规划——搜索算法详解(二):Floyd算法详解与MATLAB代码

上次总结了Dijkstra算法的案例原理与代码&#xff0c;本文分享第二种比较基础且易懂的方法为Floyd算法&#xff0c;该算法可以有效正确地处理有向图的最短路径问题&#xff0c;与Dijkstra算法不同&#xff0c;Floyd算法是一种动态规划算法&#xff0c;对于稠密图效果显著。原理…

安达发|APS计划排产系统帮助纺织业实现企业数字化管理

APS&#xff08;高级计划排产系统&#xff09;是一种基于供应链管理和约束理论的计划排产工具&#xff0c;它通过模拟和优化企业的生产、物流等运作过程&#xff0c;帮助企业实现精细化管理。在纺织业中&#xff0c;APS的应用可以极大地推动企业数字化管理的进程&#xff0c;具…

武汉星起航:各大企业力挺亚马逊,共筑跨境电商新生态

亚马逊电商平台作为全球领先的跨境电商巨头&#xff0c;一直以来都备受各大企业的青睐与支持。这些企业通过与亚马逊合作&#xff0c;共同拓展市场、提升品牌影响力&#xff0c;实现了互利共赢的局面。武汉星起航将浅析各大企业对亚马逊电商平台的支持&#xff0c;展现其共筑强…

Linux之时间子系统(四): tick 层模块(broadcast )

一、前言 在内核中&#xff0c;有cpuidle framework可以控制cpu的节电&#xff1a;当没有进程调度到该cpu上执行的时候&#xff0c;swapper进程粉墨登场&#xff0c;将该cpu会被推入到idle状态。当然CPU的idle状态有深有浅&#xff0c;当CPU睡的比较深入的时候&#xff0c;有可…

嵌入式C语言中头文件计设规则方法

我是阿梁,最近在负责的项目代码,也算是祖传代码了,里面有很多头文件嵌套的情况,即a.h包含b.h,b.h又包含c.h,c.h又包含d.h......遂找到一份华子的C语言编程规范学习一下,并结合自己的理解写成这篇文章,以规范自己的代码。 1. 头文件嵌套的缺点 依赖:若x.h包含了y.h,则…

组蛋白脱乙酰酶介导的胃癌肿瘤微环境特征及协同免疫治疗(多组学文献学习)

目录 ①HDAC转录组多数据NMF一次聚类 ②ACRG队列中HDAC单独NMF聚类 ③HDS评分在胃癌中的临床特征和基因组特征 ④高 HDS 可能提示胃癌的“热”肿瘤状态 ⑤HDS是胃癌免疫治疗效果的有力预测指标 ⑥单细胞转录组测序揭示了高HDS和低HDS患者的TME ⑦内皮细胞和成纤维细胞可…

Unity LineRenderer的基本了解

在Unity中&#xff0c;LineRenderer组件用于在场景中绘制简单的线条。它通常用于绘制轨迹、路径、激光等效果。 下面来了解下它的基本信息。 1、创建 法1&#xff1a;通过代码创建 using UnityEngine;public class CreateLineRenderer : MonoBehaviour {void Start(){// 创…

接口自动化框架搭建(四):pytest的使用

1&#xff0c;使用说明 网上资料比较多&#xff0c;我这边就简单写下 1&#xff0c;目录结构 2&#xff0c;test_1.py创建两条测试用例 def test_1():print(test1)def test_2():print(test2)3&#xff0c;在pycharm中执行 4&#xff0c;执行结果&#xff1a; 2&#xff0…

Taskflow:子流任务(Subflow Tasking)

创建Subflow DAG任务中&#xff0c;有一种常见的场景&#xff0c;一个任务可能在执行期间产生新的任务&#xff0c;然后紧接着执行新任务。 之前提到的静态图就没有办法实现这样一个功能了&#xff0c;所以Taskflow提供了另一种流的节点&#xff1a;Subflow&#xff0c;Subflo…

node.js学习(2)

版权声明 以下文章为尚硅谷PDF资料&#xff0c;B站视频链接&#xff1a;【尚硅谷Node.js零基础视频教程&#xff0c;nodejs新手到高手】仅供个人学习交流使用。如涉及侵权问题&#xff0c;请立即与本人联系&#xff0c;本人将积极配合删除相关内容。感谢理解和支持&#xff0c;…

ttkbootstrap界面美化系列之Notebook(四)

在简单的界面设计中&#xff0c;Notebook也是常用的组件之一&#xff0c;Notebook组件的引入可以根据标签来切换不同的界面。使得界面更有层次感&#xff0c;不必都挤在一个界面上。在tkinter中就有Notebook组件&#xff0c;在ttkbootstrap中&#xff0c;同样也对Notebook进行了…

Linux+ARM 简单环境检测---软件部分

1、前言 这个是我学习linuxARM的在做的第一个软硬件结合项目&#xff0c;以往的类似这种整体类项目还是光单片机的时候&#xff0c;linux软件部分学习了差不多快一年了&#xff0c;因为各种事情耽搁&#xff0c;这个项目一直没有静下心来完成&#xff0c;不过终于哈哈哈哈搞完了…

代码随想录——移除元素(Leetcode27)

题目链接 暴力&#xff1a;&#xff08;没有改变元素相对位置&#xff09; class Solution {public int removeElement(int[] nums, int val) {int len nums.length;for(int i 0; i < len; i){if(nums[i] val){for(int j i 1; j < len; j){nums[j-1] nums[j];}i…