Java编程基础篇

article/2025/8/21 21:25:51

目录

  • 计算机、程序和Java概述
    • 计算机组成
  • 基本程序设计
    • 标识符
    • 数值数据类型
    • 格式化控制台输出
    • 输入输出重定向
      • 输入重定向
      • 输出重定向
      • 输入输出重定向
      • 方法重载
      • 变量的范围
  • 数组
    • 声明数组变量
    • 创建数组
    • 初始化数组
    • 可边长参数
    • 二维数组
    • 静态变量、常量和方法
      • 静态变量
    • 限定字符串
    • StringBuilder和StringBuffer
  • 继承
    • 方法重载和重写
  • 多态
    • 动态绑定
    • 访问修饰符
  • 异常处理和文本I/O
    • File类
      • 使用Try-with-resource自动关闭资源
  • 抽象类和接口
    • 抽象类
    • 接口
    • 接口与抽象类的比较
    • 类的设计原则
    • 小结
  • 内部类
    • 内部类特征
    • 匿名内部类
      • 匿名内部类的特征
  • 二进制I/O
    • 二进制I/O类(字节流)
    • FileInputStream & FileOutputStream
    • DataInputStream & DataOutputStream
    • BufferedInputStream & BufferedOutputStream
    • ObjectInputStream & ObjectOutputStream
    • 随机访问文件
  • 递归

计算机、程序和Java概述

计算机组成

  • 中央处理器(cpu)
  • 内存(主存)
  • 存储设备
  • 输入设备
  • 输出设备
  • 通信设备
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

基本程序设计

标识符

标识符必须遵循一下规则:

  • 标识符是由字母,数字,下划线(_)和美元符号($)构成的字符序列
  • 标识符必须以字母,下划线和美元符号开头,不能以数字作为开头
  • 标识符不能是保留字
  • 表示符不能是 true,false 和 null
  • 标识符的长度可以为任意

数值数据类型

类型名名称范围存储大小
byte-27(-128) ~ 27-1(127)8位带符号数
short-215(-32 768) ~ 215-1(32 767)16位带符号数
int-231(-2 147 483 648) ~ 231-1(2 147 483 647)32位带符号数
long-263(-9 223 372 036 854 775 808) ~ 263-1(9 223 372 036 854 775 807)64位带符号数
float负数范围:-3.4028235E+38 ~ -1.4E-45
正数范围: 1.4E-45 ~ 3.4028235E+38
32位,标准IEEE745
double负数范围:-1.7976931348623157E+308 ~ -4.9E-324
正数范围: 4.9E-324 ~ 1.7976931348623157E+308
64位,标准IEEE745

格式化控制台输出

在这里插入图片描述
在这里插入图片描述

输出宽度最少为10,如果不够10位则在前面加对应的空格,如:
126.041631654
%.2f 取小数点后两位,126.04
目前长度为6,则在输出的126.04前添加4个空格

double number = 126.041631654
System.out.printf("This is number: %10.2f",number);// 输出
This is number:     126.04
// 正数表示右对齐
System.out.printf("%10s%10s%10s%10s\n","name","sex","age","id_num");
// 负数表示左对齐
System.out.printf("%-10s%-10s%-10s%-10s","name","sex","age","id_num");// 输出name       sex       age    id_num
name      sex       age       id_num 

输入输出重定向

  • Redirection .java
import java.util.Scanner;
public class Redirection {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int data = scanner.nextInt();int sum = 0;while (data != 0){sum += data;data = scanner.nextInt();}System.out.println("The sum is: " + sum);}
}
  • input.txt
1 2 3 4 5 6
7 8 9 10 0

输入重定向

javac Redirection.java
java Redirection < input.txt# 输出
The sum is: 55

输出重定向

java Redirection > output.txt# 将结果写入到output.txt中
The sum is: 55

输入输出重定向

java Redirection < input.txt > output.txt# 读取input.txt中的内容,然后将结果写入到output.txt中
The sum is: 55

方法重载

  • 在同一个类中
  • 具有相同的方法名
  • 参数列表不同(类型,个数,顺序不同),与返回值无关

变量的范围

  • 局部变量

数组

声明数组变量

elementType[] arrayRefVar;

创建数组

arrayRefVar = new elementType[arraySize];

初始化数组

elementType[] arrayRefVar = {value0,value1,value2,.......,valueN};

可边长参数

typeName... parameterName

二维数组

int[][] matrix;
matrix = new int[5][5];

静态变量、常量和方法

静态变量被类中的所有对象共享,静态方法不能访问类中的实例成员

静态变量

静态变量将变量存储在一个公共的内存地址

限定字符串

String类型的对象是不可变得,如果两个直接字符量相同的话,他们都会指向同一个String类型的对象中,这个独特的对象称之为限定字符串对象

StringBuilder和StringBuffer

  • String与StringBuilder和StringBuffer的区别
    String是不可变的字符串,而StringBuilder和StringBuffer都是可边的字符串,相比String它们二者更加灵活

  • StringBuilder和StringBuffer的区别
    两者基本是一样的,除了StringBuffer中修改缓冲区的方法是同步的,这就意味着如果是并发访问的话,StirngBuffer可以同步防止程序崩溃

继承

super关键字

  1. 调用父类的构造方法(调用构造方法的时候,必须放在子类构造方法的第一行)
  2. 调用父类的方法

方法重写:需要在子类中使用和父类一样的签名,以及相同的返回值类型进行定义

静态方法:静态方法可以被继承,但是不能够被重写,如果子类中定义了相同的方法,那么父类的静态方法将会隐藏起来,可以使用superClassName.staticMethonName调用隐藏的静态方法

方法重载和重写

重载意味着使用同样的名字但是不同的签名来定义多个方法。
重写意味者在子类中提供一个对方法的新的实现。

多态

多态意味着父类的变量可以指向子类对象

动态绑定

访问修饰符

在这里插入图片描述

异常处理和文本I/O

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

File类

使用Try-with-resource自动关闭资源

try(需要打开的资源;) {操作}

// try-with-resourcetry(PrintWriter printWriter = new PrintWriter(file);) {printWriter.print("John T Smith ");printWriter.println(90);printWriter.print("Eric K Jones ");printWriter.println(85);}// 上下等价PrintWriter printWriter = new PrintWriter(file);printWriter.print("John T Smith ");printWriter.println(90);printWriter.print("Eric K Jones ");printWriter.println(85);printWriter.close();

抽象类和接口

抽象类

抽象类不可用于创建对象。抽象类可以包含抽象方法,这些方法将在具体的子类中实现

  • 抽象方法不能包含在非抽象类中。如果抽象父类的子类不能实现所有的抽象方法,那么子类也必须定义为抽象的。换句话说,在抽象类扩展的非抽象子类中,必须实现所有的抽象方法。还要注意到,抽象方法是非静态的
  • 抽象类是不能使用 new 操作符来初始化的。但是,仍然可以定义它的构造方法,这个构造方法在它的子类的构造方法中调用
  • 包含抽象方法的类必须是抽象的。但是,可以定义一个不包含抽象方法的抽象类。在这种情况下,不能使用 new 操作符创建该类的实例。这种类是用来定义新子类的基类的
  • 子类可以覆盖父类的方法并将它定义为 abstract。这是很少见的,但是它在当父类的方法实现在子类中变得无效时是很有用的。在这种情况下,子类必须定义为abstract
  • 即使子类的父类是具体的,这个子类也可以是抽象的。例如,Object 类是具体的,但是它的子类如 CeometricObject 可以是抽象的
  • 不能使用 new 操作符从一个抽象类创建一个实例,但是抽象类可以用作一种数据类型

接口

接口是一种与类相似的结构,只包含常量和抽象方法

  • 接口定义
修饰符 interface 接口名{/** 常量声明 *//** 方法签名 */
}
  • 接口的继承
    利用关键字 extends, 接口可以继承其他接口。这样的接口称为子接口(subinterface)。
public interface NewInterface extends Interface1,Interface2,...InterfaceN{}

接口与抽象类的比较

在这里插入图片描述

类的设计原则

  • 内聚性
    类应该描述一个单一的实体,而所有的类操作应该在逻辑上相互配合,支持一个一致的目的。例如:可以设计一个类用于学生,但不应该将学生与教职工组合在同一个类中,因为学生和教职工是不同的实体

  • 一致性
    遵循标准 Java 程序设计风格和命名习惯。为类、数据域和方法选取具有信息的名字。通常的风格是将数据声明置于构造方法之前,并且将构造方法置于方法之前

  • 封装性
    一个类应该使用 private 修饰符隐藏其数据,以免用户直接访问它。这使得类更易于维护

  • 清晰性
    为使设计清晰,内聚性、一致性和封装性都是很好的设计原则。除此之外,类应该有一个很清晰的合约,从而易于解释和理解

  • 完整性
    类是为许多不同用户的使用而设计的。为了能在一个广泛的应用中使用,一个类应该通过属性和方法提供多种方案以适应用户的不同需求

  • 实例和静态
    依赖于类的具体实例的变量或方法必须是一个实例变量或方法。如果一个变量被类的所有实例所共享,那就应该将它声明为静态的

  • 继承与聚合
    继承和聚合之间的差异,就是 is-a (是一种)和 has-a (具有)之间的关系

  • 接口和抽象类
    接口比抽象类更加灵活,因为一个子类只能继承一个父类,但是却可以实现任意个数的
    接口

小结

  1. 抽象类和常规类一样,都有数据和方法,但是不能用 new 操作符创建抽象类的实例
  2. 非 抽 象 类 中 不 能 包 含 抽 象 方 法。如果抽象类的子类没有实现所有被继承的父类抽象方法,就必须将该子类也定义为抽象类
  3. 包含抽象方法的类必须是抽象类。但是,抽象类可以不包含抽象的方法
  4. 即使父类是具体的,子类也可以是抽象的
  5. 接口是一种与类相似的结构,只包含常量和抽象方法。接口在许多方面与抽象类很相近,但抽象类除了包含常量和抽象方法外,还可以包含变量和具体方法
  6. 在 Java中,接口被认为是一种特殊的类。就像常规类一样,每个接口都被编译为独立的字节码文件
  7. 接口 java.lang.Comparable 定义了 compareTo 方法。Java 类库中的许多类都实现了 Comparable
  8. 接口 java.lang.Cloneable 是一个标记接口。实现 Cloneable 接口的类的对象是可克隆的
  9. 个类仅能继承一个父类,但一个类却可以实现一个或多个接口
  10. — 个接口可以继承一个或多个接口

内部类

内部类,或者称为嵌套类,是一个定义在另外一个类范围中的类。内部类对于定义处理器类非常有用

内部类特征

  • — 个内部类被编译成一个名为 OuterClassName$InnerClassName 的类
  • 一个内部类可以引用定义在它所在的外部类中的数据和方法。所以,你没有必要将外部类对象的引用传递给内部类的构造方法。基于这个原因,内部类可以使得程序更加精简
  • 一个内部类可以使用可见性修饰符所定义,和应用于一个类中成员的可见性规则一样
  • 一个内部类可以被定义为 static。一个 static 的内部类可以使用外部类的名字所访问。一个 static 的内部类不能访问外部类中非静态的成员
  • 内部类对象通常在外部类中所创建。但是你也可以从另外一个类中来创建一个内部类的对象。如果内部类是非静态的,你必须先创建一个外部类的实例,然后使用以下语法来创建一个内部类的对象:
OuterClass.InnerClass innerObject = outerObject.new InnerClass();ControlCircle controlCircle = new ControlCircle();
ControlCircle.CirclePane circlePane = controlCircle.new CirclePane();
  • 如果内部类是静态的,使用以下语法来创建一个内部类对象:
OuterClass.InnerClass innerObject = new OuterClass.InnerClass();

匿名内部类

一个匿名内部类是一个没有名字的内部类。他将一步实现定义一个内部类以及创建一个内部类的实例

new SuperClassName/InterfaceNameO { 
// Implement or override methods in superclass or interface// Other methods if necessary
}

匿名内部类的特征

  • — 个匿名内部类必须总是从一个父类继承或者实现一个接口,但是它不能有显式的extends 或者 implements 子句
  • 一个匿名内部类必须实现父类或者接口中的所有抽象方法
  • — 个匿名内部类总是使用它父类的无参构造方法来创建一个实例。如果一个匿名内
    部类实现一个接口,构造方法是 Object()
  • 一个匿名内部类被编译成一个名为 OuterClassNameSn.class 的类。例如,如果外部类 Test 有两个匿名的内部类,它们将被编译成 Test$1.class 和 Test$2.class

二进制I/O

二进制I/O类(字节流)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

FileInputStream & FileOutputStream

FilelnputStream 类和 Fi1eOutputStream 类用于从/向文件读取/写人字节。它们的所有方法都是从I叩utStream 类和 OutputStream 类继承的

  • FileInputStream构造方法
    在这里插入图片描述
  • FileOutputStream构造方法在这里插入图片描述

DataInputStream & DataOutputStream

DatalnputStream 从数据流读取字节,并且将它们转换为合适的基本类型值或字符串。DataOutputStream 将基本类型的值或字符串转换为字节,并且将字节输出到数据流。

  • DataInputStream
    在这里插入图片描述
  • DataOutputStream
    在这里插入图片描述

BufferedInputStream & BufferedOutputStream

BufferedlnputStream 类和 BufferedOutputStream 类可以通过减少磁盘读写次数来提髙输人和输出的速度。使用 Bufferdl叩utStream 时,磁盘上的整块数据一次性地读入到内存中的缓冲区中。然后从缓冲区中将个别的数据传递到程序中

  • BufferedInputStream构造方法
    在这里插入图片描述
  • BufferedOutputStream构造方法
    在这里插入图片描述

ObjectInputStream & ObjectOutputStream

ObjectlnputStream 类和 ObjectOutputStream 类除了可以实现基本数据类型与字符串的输人和输出之外,还可以实现对象的输人和输出

  • ObjectInputStream
    在这里插入图片描述

  • ObjectOutputStream
    在这里插入图片描述

随机访问文件

Java 提供了 RandomAccessFile 类,允许在文件的任意位置上进行读写。使用 RandomAccessFile 类打开的文件称为随机访问文件

在这里插入图片描述
注:当创建一个 RandomAccessFile 时,可以指定两种模式( “r”或"rw") 之一。模式"r"表
明这个数据流是只读的,模式"rw"表明这个数据流既允许读也允许写

RandomAccessFile raf = new RandomAccessFi1e("test.dat", "rw"):

递归

递归方法就是直接或间接调用自身的方法


http://chatgpt.dhexx.cn/article/GlChAGfP.shtml

相关文章

Java 基础编程入门

一、什么是Java Java是一种编程语言二、应用场景 非windows平台下互联网环境的开发首选三、Java语言特点 1、应用面广 2、简单易学(相对于C/C) 3、面向对象(更符合我们看待事物的特点) 4、跨平台(一处编译&#xff0c;处处运行) 5、多线程(提升系统性能) 单线…

JAVA的编程基础(上)

1. JAVA的基本语法 1.1 注释 单行注释&#xff1a;// 多行注释&#xff1a;/* */ 文档注释&#xff1a;/** */ 注意&#xff1a;单行注释可以嵌套&#xff0c;多行注释和文档注释不可以嵌套 1.2 关键字 含义&#xff1a;在编程语言中&#xff0c;已经被赋予一些特殊含义…

Java编程基础(1)

1.Java基本语法 &#xff08;1&#xff09;Java程序的基本格式&#xff1a; 修饰符 class 类名 { 程序代码 } 如果Java程序要运行&#xff0c;则必须要有main方法&#xff0c;main方法是程序运行的入口 格式&#xff1a; 修饰符 class 类名{ public static void main&…

Java编程基础之网络编程

网络编程 文章目录 网络编程概述C/S和B/S网络通信协议网络编程要素 IP类UDP协议数据传输发送端接收端udp数据传输丢失问题 TCP概述Socket客户端ServerSocket服务端Socket**服务器代码**客户端代码 文件上传实现客户端服务端多线程版 概述 C/S和B/S 网络通信协议 协议:protoco…

java编程基础(一)二进制

文章目录 二进制面试题bit 和 bytejava 中的 byte 类型java 中 byte 类型表示正数&#xff1a;java 中 byte 类型表示负数&#xff1a; 四种整数类型的最小和最大值二进制和十进制的互转练一练java 代码中直接写二进制字面值代码仓库 二进制 对于任何已知类型的传统计算机而言…

Java 基础

Java 基础知识点整理 Java 语言是一种优秀的编程语言&#xff0c;由 C 语言、C 语言发展而来。Java 语言提供了一些有效的新特性&#xff0c;使得使用 Java 比 C 更容易写出“无错代码”。 Java特性和优点 面向对象编程的思想&#xff0c;更简单有效&#xff0c;Java 省略了 …

Java编程基础②

Java编程基础 Java中的注释Java中的标识符Java中的关键字Java中的常量常量类型定义常量 java中的变量变量的定义及其数据类型变量的类型转换变量的作用域 java运算符算术运算符赋值运算符比较运算符逻辑运算符位运算符运算符的优先级 java流程控制语句if条件语句switch条件语句…

第二章 Java编程基础

第二章 Java编程基础 目录 一&#xff0e; Java基本语法1. 基本格式2. 注释3. 标识符4. 关键字5. 常量 二&#xff0e; 变量1. 定义2. 数据类型3. 整数类型变量4. 浮点类型变量5. 字符类型变量6. 布尔类型变量7. 类型转换8. 自动提升9. 变量作用域 三&#xff0e; 运算符1. 算数…

【JAVA】1.编程基础

1.Java基本语法 JAVA基本格式&#xff1a; 修饰符 class 类名{ 程序代码 } public class java {public static void main(String[] args) {System.out.println("HelloWorld"); } public static void main(String[] args) {} &#xff08;对于初学者来说这个部分必…

第二章Java编程基础

一、填空题 1&#xff0e;Java程序代码必须放在一个类中&#xff0c;类使用class关键词定义。 2&#xff0e;Java中的注释有三类&#xff0c;分别是单行注释、多行注释、文档注释。 3&#xff0e;Java语言中&#xff0c;int类型所占存储空间为4个字节。 4&#xff0e;用于比…

Java基础 —— 编程入门

一、比特(bit)和字节(byte) 一个0或者一个1存储为一个比特(bit)&#xff0c;是计算机中最小的存储单位。计算机中是最基本的存储单元是字节(byte)。 每个字节由8个比特构成。 计算机就是一系列的电路开关。每个开关存在两种状态:关(off)和开(on)。如果电路是开的&#xff0c;它…

第二章:JAVA编程基础

目录 一&#xff1a;Java的基本语法格式 二&#xff1a;Java中的变量与常量 三&#xff1a;Java中的运算符 四&#xff1a;选择结构语句 五&#xff1a;循环结构语句 六&#xff1a;数组 一&#xff1a;Java的基本语法格式 1&#xff1a;语法格式 [修饰符] class 类名{…

Java编程基础知识(一)

目录 一.Java的基本语法 1.Java的基本语法格式 2.Java中的注释 3.Java中的关键字 Java中的标识符 二.Java中的常量与变量 1.常量 2.变量 三.Java中的运算符 四.数据输入 一.Java的基本语法 1.Java的基本语法格式 编写Java程序必须先声明一个类&#xff0c;然后再类中…

Java编程基础

目录 第一篇、Java编程基础 ❀Java中的属性名词 ❀Java数据类型 ❀转义字符 ❀&& 和 & 与 || 和 | ❀方法 第二篇、Java面向对象编程 ❀类和对象 ❀面向过程和面向对象的区别 ❀面向对象程序设计的主要特性 ❀类和对象概述 ❀对象的内存结构 ❀垃圾空间…

java编程基础(入门级)(超级完整版)

java基础编程&#xff08;入门&#xff09; 01基础知识 1.计算机基础 【1】进制 A.十进制转化二进制 除以2&#xff0c;求余数&#xff0c;商继续除以2&#xff0c;一直到0为止&#xff0c;从底下往上得到结果。 B.二进制转化十进制 1 | 1 | 0 | 0 2 3 ∣ 2 2 ∣ 2 1 ∣ 2 …

UFBGA176+25 封装尺寸图

下图是UFBGA17625 封装规格的参数&#xff0c;根据下图的参数&#xff0c;即可制作UFBGA17625 的PCB封装

电阻的封装规格

1.直插式电阻 卧式直插电阻的封装形式为AXIAL-xx(比如 AXIAL-0.3)&#xff0c;0.3为焊盘中心距&#xff0c;单位是英寸&#xff0c;1 inch 25.4 mm 1000mil。 M型&#xff0c;电阻两端折弯。金属膜直插电阻功率-封装-尺寸对应表 封装尺寸(inch)对应长度&#xff08;mm&#…

Allegro PCB封装表贴器件-0805电阻-实战-详细封装制作过程(一)

1.Allegro封装元素 使用Allegro制作PCB封装&#xff0c;首先我们需要了解Allegro封装组成的元素&#xff0c;由焊盘、外形、字符三要素组成&#xff0c;如图 1所示。 图 1 Allegro封装元素 2.表贴元器件 2.1 0805电阻 我们需从规格书获得0805电阻推荐焊盘尺寸&#xff0c;如图 …

常见的贴片LED封装尺寸规格表

LED灯珠分为表贴式&#xff08;SMD&#xff09;和直插式&#xff08;DIP&#xff09;&#xff0c;表贴就是大家常说的贴片&#xff0c;也成为贴片式&#xff0c;本文主要介绍贴片灯珠的规格尺寸和命名。 单颗LED封装后通常以其尺寸命名&#xff0c;比如&#xff1a; 3528、5050…

0805,0603,1206这些封装的名字是什么来的

封装尺寸是长x宽&#xff0c;0805,0603,1206 这些单位是英制&#xff0c;0805代表0.8英寸x0.5英寸&#xff0c;而1英寸25.4毫米 &#xff08;注意&#xff1a;封装尺寸是实物封装的尺寸&#xff0c;不是焊盘的或者pcb封装图的尺寸&#xff0c;pcb封装图的尺寸会稍微大些&#…