写在前面
昨天说我是大二的,嗯...我忘了居然是学年制的,现在的我还是个大一的学生,不过没关系,不管大一还是大二,学习都是我们自己的事。
由于今天周末,并没有把全部的时间花费在Java的学习上面,上午还看了一些数据结构相关的知识。原本打算专门写数据结构的,但想想现在还只是初略的学,指不定哪天就胎死腹中了,等到系统学的时候在专门总结。
今日所学
Java部分
1.文件输入与输出
在文件输入的时候,都编写过自己的第一个Java代码。
public class sun { public static void main(String[] args) { System.out.println("Hello World"); } }
这里面的System.out就是输出,但要想读取一个文件,需要构造一个Scanner对象。
Scanner in = Scanner(Path.of("myfile.txt"), StandardCharsets.UTF_8);
想要写入文件,就需要构造一个PrintWriter对象
PrintWriter out = new PrintWriter("myfile.txt\",StandardCharsets.UTF_8);
2.块作用域
块(复合语句)是指由若干个Java语句组成的语句,并用一对大括号括起来
public class sun { public static void main(String[] args) { int n; ... { int k; ... } } }
注意:不能在嵌套的两个块中声明同名的变量。
3.条件语句
if(condition) statement;
if(condition) statement1 else statement2
4循环
while(condition) statement
do statement while(condition)
确定循环
for (int i = 1;i <= 10;i++) { System.out.println(i); }
泛型for循环,可以用来依次处理数组(或者其他元素的集合)中的每个元素
for(variable : collection) statement
for循环也可以获得相同的效果,但是for each更加简洁,不易出错。
5多重选择:switch语句
Scanner in = new Scanner(System.in); System.out.print("Select an option(1,2,3,4)"); in choice = in.nextInt(); switch (choice) { case 1: ... break; case 2: ... break; case 3: ... break; case 4: ... break; default: ... break; }
5.中断控制流程语句
Java没有打算在语言中使用goto,但增加了一条新语句:带标签的break。
注意:标签必须放在希望跳出的最外层循环之前,并且必须紧跟一个冒号。(说实话,这里我不是很懂,倒不是理解上的问题,而是这到底有什么用。或者用处有多大?)
6.大数
整数和浮点数精度不能满足需求,可以使用java.math中的两个类:BigInteger和BigDecimal
7.数组
说到数组...可能在学C的时候,数组与指针挂钩给人一种很难的错觉,那是多元数组。
声明数组
int[] a = new int[100]
int[] smallPrimes = {2,3,5,7,11,13}
匿名数组:new int[] {17,19,23}
访问数组元素
int [] a = new int[100]; for (int i = 0;i < 100;i++) { a[i] = i; }
多维数组(咱先跳过,先跳过)
数据结构部分
我想说的:都说数据结构难,其实吧,是真的难...但是,哪一行没有难度呢,本身计算机专业就有门槛,也不是任何人都能学。每一行都是自己的难度,数据结构对我来说可能就是太抽象了,不好理解...然后就是,懂了是什么,但是我却还是看不懂书...
1.时间复杂度:算法的时间复杂度就是算法时间度量T(n)= O(f(n))
常见的时间复杂度O(1) < O(log2n) < O(n) < O(n*n) <...<O(n!)
2.空间复杂度:f(n)为语句关于n的所占存储空间的函数
3.函数的递归:一个函数在调用其它函数的过程中,又出现了对自身的调用。
迭代使用的循环结构,递归使用选择结构
4.结构体和联合体
结构体:自定义的数据类型,构造非数值数据类型。
联合体:成员共享一个存储空间。
5.链表(就是它,我知道他是个什么东西,但是我就是看不懂数据结构和算法分析 C语言描述):需要动态分配内存,长度随时可以发生改变。有一个指针类型的成员指向自身,该指针指向与结构体一样的类型。
今天就到这里吧。