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() {
        // 创建ArrayList
        ArrayList<Integer> numberList = new ArrayList<>();
        numberList.add(10);
        numberList.add(20);

        // 创建HashMap
        HashMap<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 {
    // 重写方法(多态)
    @Override
    public 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;
    }

    // 实现抽象方法
    @Override
    double area() {
        return Math.PI * radius * radius;
    }

    // 实现接口方法
    @Override
    public void draw() {
        System.out.println("Drawing Circle");
    }
}
概念描述
抽象类使用 abstract 关键字声明,可以包含抽象方法和具体方法。
接口使用 interface 关键字声明,只能包含抽象方法(Java 8之前)。
实现子类使用 extends 关键字继承抽象类,使用 implements 关键字实现接口。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

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

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

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

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

MIPI RFFE接口

1. 概况 MIPI RFFE是一种专门针对当前及未来无线系统在射频(RF)前端控制界面规范。随着手机射频系统日趋复杂&#xff0c;业界需要一个单一控制界面解决方案。MIPI联盟的RF前端控制界面(RFFE)规范通过提供一个可连接到收发器或无线电的总线界面解决了这一难题&#xff0c;可用于…

vue中使用图片url直接下载图片

vue中使用图片url直接下载图片 // 下载图片downloadByBlob(url, name) {let image new Image()image.setAttribute(crossOrigin, anonymous)image.src urlimage.onload () > {let canvas document.createElement(canvas)canvas.width image.widthcanvas.height image…

《自动机理论、语言和计算导论》阅读笔记:p68-p114

《自动机理论、语言和计算导论》学习第4天&#xff0c;p68-p114总结&#xff0c;总计47页。 一、技术总结 1.inverted indexes 明白单词的意思是“反转的索引”&#xff0c;但是不明白其在书中具体指什么&#xff0c;去查询资料的话需要花很不多时间&#xff0c;先继续往下看…

springboot婚庆系统

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于婚庆系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了婚庆系统&#xff0c;它彻底改变了过去传统的管理方式…

学生党开放式运动耳机怎么选?五款超高销量高性价比品牌推荐

开放式运动耳机成为了许多人的运动首选装备&#xff0c;想要在众多的开放式耳机中找到一款价格亲民&#xff0c;且性能在线高性价比的开放式运动耳机可并非那么简单&#xff0c;所以今天我就来为大家推荐五款超高销量、高性价比的运动耳机品牌。 在推荐之前&#xff0c;整理了…

Java复习第十二天学习笔记(JDBC),附有道云笔记链接

【有道云笔记】十二 3.28 JDBC https://note.youdao.com/s/HsgmqRMw 一、JDBC简介 面向接口编程 在JDBC里面Java这个公司只是提供了一套接口Connection、Statement、ResultSet&#xff0c;每个数据库厂商实现了这套接口&#xff0c;例如MySql公司实现了&#xff1a;MySql驱动…

继承练习题目

练习 练习1&#xff1a; 定义一个学生类Student&#xff0c;它继承自Person类 练习2&#xff1a; (1)定义一个ManKind类&#xff0c;包括 成员变量int sex和int salary&#xff1b; 方法void manOrWoman()&#xff1a;根据sex的值显示“man”(sex1)或者“woman”(sex0)&…

异常-模块-包-Python

师从黑马程序员 异常的概念 异常演示 捕获异常的方法 try:fopen("D:/abc.txt","r",encoding"UTF-8") except:print("出现异常了&#xff0c;因为文件不存在&#xff0c;我将open的模式&#xff0c;改为w模式去打开")fopen("D:/a…

前端小白如何理解mvc mvp mvvm

架构、框架、设计模式是都是啥&#xff1f; 架构&#xff1a;抽象出来不同组织或者对象亦或是简单组件&#xff0c;根据需求和各个单元的功能&#xff0c;进行组合排列。 从而完成系统的运行或者是实现目标。 框架&#xff1a;使用什么样的规则&#xff0c;什么样的开发语言&…

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

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

项目亮点—动态线程池管理工具

问题 你是否在项目中使用线程池遇到过以下问题&#xff1f; 1.创建线程池核心参数不好评估&#xff0c;随着业务流量的波动&#xff0c;极有可能出现生产故障。 2.不支持优雅关闭&#xff0c;当项目关闭时&#xff0c;大量正在运行的线程池任务被丢弃。 3.不支持运行时监控…

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

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

Taskflow:子流任务(Subflow Tasking)

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

gpt 3d三角形 重心坐标填充 沿x轴炫赵师傅

go import pygame from pygame.locals import * import sys import math# 初始化Pygame pygame.init()# 设置窗口大小 width, height 800, 600 screen pygame.display.set_mode((width, height)) pygame.display.set_caption(3D Triangle Fill with Barycentric Coordinates)…

zabbix主动发现,注册及分布式监控

主动发现 结果 主动注册 结果 分布式监控 服务机&#xff1a;132 代理机&#xff1a;133 客户端&#xff1a;135 代理机 数据库赋权&#xff1a; 代理机配置 网页上配置代理 客户端配置 网页上配置主机 重启代理机服务 网页效果

写作类AI推荐(二)

本章要介绍的写作AI如下&#xff1a; 火山写作 主要功能&#xff1a; AI智能创作&#xff1a;告诉 AI 你想写什么&#xff0c;立即生成你理想中的文章AI智能改写&#xff1a;选中段落句子&#xff0c;可提升表达、修改语气、扩写、总结、缩写等文章内容优化&#xff1a;根据全文…

【LV16 day2 平台总线驱动开发---名称匹配】

一、总线、设备、驱动 硬编码式的驱动开发带来的问题&#xff1a; 垃圾代码太多结构不清晰一些统一设备功能难以支持开发效率低下 1.1 初期解决思路&#xff1a;设备和驱动分离 ​ struct device来表示一个具体设备&#xff0c;主要提供具体设备相关的资源&#xff08;如寄…

sadtalker学习用于风格化音频驱动单图像说话人脸动画的真实 3D 运动系数的应用

论文出处 https://arxiv.org/abs/2211.12194 使用方法 1. 打开项目的colab链接 https://colab.research.google.com/github/Winfredy/SadTalker/blob/main/quick_demo.ipynb#scrollTofAjwGmKKYl_I 在examples/source_image文件夹中添加希望动起来说话的图片&#xff0c;这…