Java基础语法
1.1Java的输入与输出
输入与输出
读取输入
Scanner
类在 java.util 包中有定义,因此需要先进行导入:import java.util.Scanner;
- 声明输入对象:
Scanner in = new Scanner(System.in)
输入读取方法
in.nextline()
:读取一行输入in.next()
:读取一个单词(以空白符作为分界)in.nextInt()
:读入一个整数in.nextDouble()
:读入一个浮点数
格式化输出
直接调用System.out.print()
就可以输出数字、字符串
格式化输出方式与 C 一致:System.out.print(“%s,%s!”,a,b)
1.2Java中的数组
声明数组方式
int[] a,b;
int a[],b[];
int[] a[],b;
数组初始化
int[] a = new int[100];
var a = new int[100];
int[] a = {1,2,3}
int[] a = {1,2,3,}
:允许结尾逗号,与上式的效果一致
创建数字数组时,所有值初始化为 0;boolean 数组初始化为 false;对象数组初始化为 null
数组长度不要求是常量,但一旦创建了数组,就不能再改变它的长度。如果需要改变数组的长度,应使用数组列表
匿名数组
new int[] {1,2,3}
:通常用于赋值
访问数组元素
我们可以通过索引访问数组元素:a[0]
可以通过a.length()
方法获得数组的元素个数来遍历数组:for(int i=0;i<a.length();i++)
,但更好的方法是使用for each
循环实现遍历
数组拷贝
Java 中的数组类似于 Python 中的变量,存在数组变量、数组、引用的概念
- 直接复制:
int[] b = a
,此时如果改变b[0]
的值,那么a[0]
的值也会随之变化,因为a,b
引用了同一个数组 - 深层复制:
int[] b = Arrays.copyOf(a,a.length)
-
- 这里的第二个参数是新数组的大小,通常用这个方法改变数组的大小,变长对新增数值进行初始化,变短对原数组进行截断
数组常用操作
Arrays.sort(a)
:对数组 a 进行快速排序Arrays.fill(a,v)
:将数组 a 的所有元素值设为 vArrays.equals(a,b)
:如果 a,b 完全一致则返回 true
多维数组
Java 的多维数组实现类似于 Python 嵌套列表或 C 的指针数组。
多维数组与一维数组主要操作一致,下面指出几个不同点:
- 声明和初始化:
int[][] a = new int[3][3];
- 赋值:
a = {{1,2,3},{1,2,3}};
不规则性:由于 Java 的多维数组采用引用的方式构建,因而一个二维数组中的每一个一位数组都可以完全不同
Java中的分支
与C语言中的分支用法相同,差异点在if()中的数据是boolean型
Java中的循环
while(condition) statement
与 C 相同
do statement while(condition);
与 C 相同
for(init;compare;update) statement
与 C 相同
foreach循环类似python
面向对象
2.1面向对象介绍
个人理解:使用能进行某个行为的特定对象
面向对象的三大特性是封装、继承和多态。
2.2封装
概念:
将一些属性和相关方法封装在一个对象中,对外隐藏内部具体实现细节。
内部实现,外界不需要关心,外界只需要根据”内部提供的接口“去使用就可以。
正确设计对象的属性和方法
原则:对象代表什么,就得封装对应的数据并提供数据对应的行为
private关键字:只能在本类中使用;public:公共的(都是修饰符)
2.3继承
继承是类与类的关系
其本质是对某一批类的抽象,从而实现对现实世界更好的建模,用关键字extends实现关系的确认,如public class son extends father{}实现创建一个father子类的son类。father中的数据与方法(被封装的变量数据除外)子类son将完全共享并且son的值与father的值为共生关系。 this与super this调用的是子类存储的变量(即成员变量)与方法,super则是调用父类中存储的变量与方法,若是不加此二者为前缀,则优先调用当前方法中被定义的方法与被赋值的赋值的变量(即局部变量)。
复数继承
Java不支持多继承即同一个类继承多个父类,但支持多个子类同时继承同一个父类,或是多重继承即存在二代及以上的继承。
2.4多态
概念:
一个类,所延伸的多种形态;
调用时的多种形态:在继承的前提下;使用不同的子类,调用父类的同一个方法,产生不同的功能