Java课程学习笔记1

2025-03-19

该笔记主要记录浙江大学翁恺的java入门与进阶课程的学习笔记,主要包括第一小节的基础知识内容

1 计算机基本概念

计算机的常见的一个方法:枚举法

但枚举法往往很慢,为了加速计算往往设计了许多其他的方法,例如二分法等等,或者更加复杂优化的方法

关于程序的执行:

image-20250319193546157

解释器每次根据代码进行逐行执行,而编译器则是根据代码将其编译成机器码,然后直接用机器码运行

需要注意的是,语言的解释和编译是没有具体区分的,只是根据习惯往往会选择比如说python是解释器,c用编译器。

在今天,这两种方式没有很明显的区别。

2 java编程软件的选择

这里用来编写代码的编辑器是idea(视频里推荐的是eclipse,但考虑到实际使用而言,现在一般用的更多的都是idea)

对于软件的安装首先需要jdk,原视频推荐的是jre,但我在查阅了知乎之后感觉不如直接安装全套的内容:

image-20250319225354887

from 知乎 : JRE 和 JDK 的区别是什么? - 一直在路上的回答 - 知乎

这里我选择的是JDK24

image-20250319225517937

选择其中的x64 installer

之后一路安装就可以了,在安装了java运行环境jdk之后,就可以安装编辑器idea了:

安装链接,这里我选择的是idea2021(其实就是瞎选的)

在安装好并激活好之后,create a new project:

image-20250319225815681

需要注意的是,需要选择好jdk(类似于pycharm里配置好环境),如果你已经安装了jdk的话,idea会自动检测已有的环境(detecting jdk),下图中显示的就是我们刚刚安装的 jdk 24 image-20250319225952432

这里之后会显示如下的界面:

image-20250319230756814

意思是根据模板创建,其中的Command Line App会自动创建一个带有main方法的类,对于hello world来说不需要根据模板创建应该

接下来就是这个project的location:

image-20250319230904675

3 hello world

image-20250319232542960

编写之后可以发现,下面有warning,这是由于自 Java 17 及之后的版本,Oracle 对 Java 的原生方法(如 System.load)引入了更严格的安全限制,导致 IDEA 在运行 Java 代码时会触发警告。

为了解决这个问题,需要在Run → Edit Configurations中进行配置:

image-20250319232716051

在add VM 里加上--enable-native-access=ALL-UNNAMED

再运行就没有warning了: image-20250319232813512

tips: public sraric void 这个内容可以直接psvm快捷键实现添加

需要注意的是,每一句的要以英文的分号结尾(和c一样),没有的话会报错

但输出中文的时候面临乱码:

image-20250319234710317

应该怎么解决呢,有以下的几步:

按照以下的内容全部变成utf-8

image-20250319234737940

image-20250319234905198

然后还要修改启动配置:

image-20250319235004233

添加最后一行:

image-20250319235051454

上述的方法仅适用于jdk18以前的内容,jdk18之后内部的字符集已经变成了gbk字符集

现在只需要修改项目启动的参数为gbk编码:

还是在run-edit configuration:

image-20250319235711753

在这里的add VM options 里加上-Dfile.encoding=GBK ,特别需要注意这里要改成=GBK

image-20250319235730540

需要注意的是刚刚改的idea 启动参数不要修改,就在这修改就行了

reference: P00014-基于JDK21中IDEA控制台中文输出乱码

4 输入内容

import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {
        System.out.println("你好");
        Scanner in = new Scanner(System.in);
        System.out.println(in.nextLine());
    }
}

这里的import是自动的

如果要加一些固定字符串,和python类似可以,可以用加号:

import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {
        System.out.println("你好");
        Scanner in = new Scanner(System.in);
        System.out.println("echo:"+in.nextLine());
    }
}
															

image-20250320001149761