Java核心技术学习--第二天

博客介绍了Java基本程序设计结构和对象与类的相关知识。在基本程序设计中,涵盖输入输出、控制流程、大数值和数组操作等内容;在对象与类部分,讲解了面向对象程序设计概述、预定义类、用户自定义类、静态域与静态方法以及方法参数等要点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第三章 Java的基本程序设计结构

输入输出

读取输入

构造Scanner对象,与“标准输入流”System.in关联。

Scanner in = new Scanner(System.in);

输入中有可能包含空格时, 使用nextLine方法

String name = in.nextLine();

读取一个单词

String firstName = in.next();

读取一个整数

int age = in.nextInt();

读取一个浮点数

double age = in.nextDouble();

若想读取密码,则使用Console类。

java.util.Scanner

  • Scanner(InputStream in) 用给定的输入流创建一个Scanner对象
  • String nextLine() 读取输入的下一行内容
  • String next() 读取输入的下一行单词
  • int nextInt() 读取并转换下一个表示整数的字符序列
  • double nextDouble() 读取并转换下一个表示浮点数的字符序列
  • boolean hasNext() 检测输入中是否还有其他单词
  • boolean hasNextInt() 检测输入中是否还有表示整数的下一个字符序列
  • boolean hasNextDouble() 检测输入中是否还有表示浮点数的下一个字符序列

格式化输出

使用System.out.print(x)会将x对应的数据类型所允许的最大非0数字位数打印输出。
使用System.out.printf()可以使用多个参数,每一个以%字符开始的格式说明符都用相应的参数替换。
使用标志控制格式化输出。

文件输入与输出

对文件进行读取,需要用一个File对象构造一个Scanner对象

Scanner in = new Scanner(Path.get("myfile.txt"), "UTF-8");

如果文件名中包含反斜杠符号,就要记住在每个反斜杠之前再加一个额外的反斜杠。
构造PrintWriter对象,写入文件。

PrintWriter out = new PrintWriter("myfile.txt", "UTF-8");

如果文件不存在则创建文件,可以使用print\println\printf。

java.util.Scanner

  • Scanner(File f) 构造一个从给定文件读取数据的Scanner
  • Scanner(String data) 构造一个从给定字符串读取数据的Scanner

java.io.PrintWriter

  • PrintWriter(String fileName) 构造一个将数据写入文件的PrintWriter

控制流程

使用条件语句和循环结构确定控制流程。

块作用域

块是指由一对大括号括起来的若干条简单的Java语句。
不能在嵌套的两个块中声明同名的变量。

条件语句

循环

for语句的第1部分通常用于对计数器初始化,第2部分给出每次新一轮循环执行前要检测的循环条件,第3部分指示如何更新计数器。
循环中,检验浮点数是否相等需要小心,因为可能无法精确用二进制表示。
带标签的break语句,可用于跳出多重嵌套循环。通过执行带标签的break跳转到带标签的语句块末尾。

大数值

BigInteger和BigDecimal处理包含任意长度数字序列的数值。
BigInteger实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点运算。
使用静态的valueOf方法将普通的数值转换为大数值。

BigInteger a = BigInteger.valueOf(100);

不能使用算术运算符,需要使用add和multiply方法。

BigInteger c = a.add(b);
BigInteger d = c.multiply(b);

数组

声明变量并初始化数组

int [] a = new int[100];

数字数组所有元素都初始化为0。boolean数组的元素初始化为false。对象数组初始化为null。
获取数组元素个数,使用array.length。数组一旦创建,就不能改变其大小。

for each循环

不必指定下标值。

for(variable : collection)
	statement

定义一个变量用于暂存集合的每一个元素,并执行相应语句。collection必须是一个个数组或者一个实现了Iterable接口的类对象。

for(int element : a)
	System.out.println(element);

数组初始化以及匿名数组

创建数组对象并同时赋予初始值的简化书写形式。

int [] smallPrices = {2, 3, 5, 7, 11, 13};

初始化匿名数组

new int [] {17, 19, 23};

数组拷贝

将一个数组变量拷贝给另一个数组变量,两个变量将引用同一个数组。
将一个数组的所有值拷贝到一个新的数组中去。

luckyNumbers = Arrays.copyOf(luckyNumbers, 2 * luckyNumbers.length);

第2个参数是新数组的长度,多余的元素将被赋值为0,或false。

命令行参数

每一个Java应用程序都有一个带String [] args参数的main方法。

数组排序

使用Arrays类中的sort方法,该方法使用了优化的快速排序算反。

int [] a = new int[1000];
···
Arrays.sort(a);

java.util.Arrays

  • static String toString(type[] a) 返回包含a中数据元素的字符串,这些数据元素被放在括号内,并用逗号分隔。
  • static type copyOf(type[] a, int length)
  • static type copyOfRange(type[] a, int start, int end) 返回与a类型相同的一个数组
  • static void sort(type[] a) 采用优化的快速排序算法对数组进行排序
  • static int binarySearch(type[] a, type v)
  • static int binarySearch(type[] a, int start, int end, type v) 采用二分搜索算法查找值v
  • static void fill(type[] a, type v) 将数组的所有数据元素设置为v
  • boolean equals(type[] a, type[] b)

多维数组

不规则数组

第4章 对象与类

面向对象程序设计概述

封装将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式。

对象

识别类

识别类的简单规则是在分析问题的过程中寻找名词,而方法对应着动词。

类之间的关系

  • 依赖。如果一个类的方法操纵着另一个类的对象,那么一个类依赖于另一个类。
  • 聚合。类A的对象包含类B的对象。
  • 继承。表示特殊与一般关系。

使用预定义类

对象与对象变量

使用对象前,必须构造对象,并指定其初始状态,然后对对象应用方法。

用户自定义类

文件名必须与public类的名字相匹配。在一个源文件中,只能有一个公共类。
构造器总是伴随着new操作符的执行被调用,不能对一个已经存在的对象调用构造器。
不要在构造器中定义与实例域重名的局部变量。
所有方法都必须在类的内部定义。
不要编写返回引用可变对象的访问器方法。如果需要返回一个可变对象的引用,首先对它进行克隆。
方法可以访问所属类的私有特性。

静态域与静态方法

静态方法不能访问实例域,不能操作对象。

方法参数

Java程序设计语言对对象采用的不是引用调用,对象引用是按值传递的。
Java中方法参数的使用情况:

  • 一个方法不能修改一个基本数据类型的参数
  • 一个方法可以改变一个对象参数的状态
  • 一个方法不能让对象参数引用一个新的对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值