Java自学第二天

写在前面

昨天说我是大二的,嗯...我忘了居然是学年制的,现在的我还是个大一的学生,不过没关系,不管大一还是大二,学习都是我们自己的事。

由于今天周末,并没有把全部的时间花费在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语言描述):需要动态分配内存,长度随时可以发生改变。有一个指针类型的成员指向自身,该指针指向与结构体一样的类型。

今天就到这里吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值