【左京淳的JAVA学习笔记】第一章 JAVA基础

阿姆斯壮的一小步-准备好装备

  1. 在网路上搜寻、下载并安装好最新的JDK(JAVA编辑器套装)

  2. 设定系统path 让JAVA在任何路径下都能直接启动

  • 点选win开始选单->输入「环境变数」进行搜寻
  • 在环境变数中找到Path变数,将JAVA资资料夹中的bin资料夹新增进Path变数里面
    例:C:\Program Files\Java\jdk-11.0.1\bin
  1. 确认步骤1和2设定成功
  • 点选win开始选单->输入「cmd」开启命令提示字元视窗
  • 输入javac -version,若画面显示版本号码即设定成功

新手任务导览-JAVA档案的执行流程如下

程序码档案(source file)->编译後档案(class file)->JVM(JAVA虚拟机)执行
※source file的本质是个文件档,可以用任何文书软件编辑。只要副档名指定为.java,就能被JAVA的编译器识别。
class file记录了二进位的内容,是给JVM看的档案,由JVM再翻译成电脑可以执行的语言。

  • 文法上的错误在编译时就会报错
  • 其他的错误在执行时会报错
  • 最後程序的逻辑与预想的是否一致,则要通过测试来确认
  • 测试就是比较以下两者的输出文件是否一致
    输入文件->手动编辑->输出文件(预测值)
    输入文件->自动执行(跑程序)->输出文件(实际结果)

蹲马步-Java程序的基本构造

新建一个记事本档案,命名为Sample1_1.java
※window环境下预设文件副档名为txt,无法直接修改为java。
这时候需要开一个新的资料夹把档案放进去,然後点选「检视」->「附档名」并加以修改。

档案内容如下

  class Sample1_1 {
    public static void main(String[] args) {
      System.out.println("Hello!");
    }
  }
  • 一个java档里至少需有一个class(代表一个物件)。物件里可以存放资料(静态),也可以设定方法(动作)。
  • class名称通常与档名一致。
  • public static void main(String[] args) {}这个方法称为main方法,是JAVA程序开始执行的入口处。
  • 其中public static void都是固定的修饰词,後面的String首字大写也是固定的。
    这句芝麻开门一般的咒语,多打几次自然就会记起来。

main方法里面写了System.out.println("Hello!");
表示调用System模组里的out物件,并执行println(意指print line)方法
在画面上显示出「Hello!」字串
每个方法的结尾须使用「;」作结。

用「javac」指令进行编译

在档案上点选右键确认档案所在路径
例:C:\Users\userXXX\Desktop\java
- 点选win开始选单->输入「cmd」开启命令提示字元视窗
- 输入 cd C:\Users\userXXX\Desktop\java(请输入自己的档案路径) ,移动到档案所在位置。
- 输入javac Sample1_1.java进行编译。※注意大小写
成功的话资料夹内会出现Sample1_1.class档案。

用「java」指令执行程序(class档案)

在命令提示字元视窗输入java Sample1_1
画面出现Hello!即表示程序成功执行了。

以上就是最简单的java程序,依此类推可以把任何逻辑写到java档里并执行。

延伸1-关於class档的自动命名

写一个Sample1_2.java,里面放一个空的class

  class Foo {}

※Foo是范例常用的名称,并没有特殊意义。也可以取任何自己喜欢的名称。
依照之前的步骤编译Sample1_2.java档案
编译後会得到Foo.class档案,档名与class名称相同。

延伸2-一个java档里写多个class

  class Bar {}
  class Sample1_3 {
    public static void main(String[] args) {
      System.out.println("Hello!");
    }
  }

依照之前的步骤编译Sample1_3.java档案
编译後会得到Bar.class和Sample1_3.class两个档案。
其中Sample1_3.class里面有main方法,所以可以执行。
但Bar.class里面没有main方法,执行会报错。
试着执行以下指令
java Sample1_3
java Bar

延伸3-public修饰子

虽然一个java档内可以放入多个class
但是public class只能有一个,而且这个class的名字必须与java档名一样。

延伸4-数字与文字列

在java档里面可以用//符号写注释

  class Sample1_4 {
    public static void main(String[] args) {
      System.out.println(123.45);         //10进位
      System.out.println(0b11111111);     //0b开头为2进位表示法
      System.out.println(0xff);           //0x开头为16进位表示法
      System.out.println('A');            //''单一字母或Unicode
      System.out.println('\u3012');       //''单一字母或Unicode
      System.out.println("Hello");        //""文字列
    }
  }

依照之前的步骤编译Sample1_4.java档案
由於这次java档案里有中文字母,如果出现类似以下报错,表示此文件的编码和JAVA编译程序时采用的编码(MS950)不一致。
unmappable character (0x97) for encoding x-windows-950

发生错误时可直接把错误讯息贴到google搜寻解答
假设文件的编码采用utf-8,可以用以下的指令解决。
javac -encoding utf-8 Sample1_4.java

编译成功後执行java Sample1_4,可以发现在显示结果时,各种数字都被转换为10进位,Unicode字码也被转换为英文字母表示。

延伸5-变数的初期化

建立Sample1_5.java文件

  class Sample1_5 {
    public static void main(String[] args) {
      int num1 = 10;
      long num2 = 30;
      long num3 = 10000000000;
      float num4 = 10.0;
    }
  }

在java里面,整数预设被当成int类型的资料,小数被预设当成double型资料。
因此,num3会报错,因为10000000000超过了int类型所能保存的数值
num也会报错,因为10.0先被存成double(64 Bit)资料,在放入num4变数(float, 32 Bit)时放不进去。

所以在初始化long及float类型的变数时,需要加注符号让JAVA理解。正确写法如下:

  class Sample1_5 {
    public static void main(String[] args) {
      int num1 = 10;
      long num2 = 30;
      long num3 = 10000000000L;
      float num4 = 10.0F;
    }
  }

延伸6-变数的可用范围(Scope)

在方法内宣告的变数,只在该方法内可以被使用。

  class Sample1_6 {
    public static void main(String[] args) {
      int x = 10;
      x = 20;
    }
      x = 30;
  }

x变数由於是在main方法里被宣告的,在此方法范围外不能使用,因此x=30这行会报错

以上 是关於JAVA的学习笔记,一共有八章,这是第一章。
整理笔记一方面是为自己厘清思绪,同时也留给需要的人参考用。

参考教材: JAVAプログラマSilver SE8 - 山本 道子


<<:  【学习笔记】 .NET 5/Core Console 在 Linux 平台排程运行

>>:  [用 Python 解 LeetCode] (004) 277. Find the Celebrity

【Side Project】 顾客点菜单画面设计2-Bootstrap

最近有位小夥伴在工作上遇到了一些问题。 小夥伴问: 我在一家公司里工作了九年了。公司最近招了一个新的...

Angular 深入浅出三十天:表单与测试 Day27 - Reactive Forms 进阶技巧 - 跨栏位验证

今天想要跟大家分享的是跨栏位验证的小技巧,这个小技巧其实没有多厉害或多特别,只是可能满多人刚好不知...

用 Python 畅玩 Line bot - 07:Audio message

这次想要介绍的部分是 Audio message,它跟 Image message 一样可以透过li...

Day24 订单金流 -- 叮咛

到昨天为止订单、订单金流已经谈的差不多了, 大部分的正常环节以及常用功能的应用, 订单写入的部份已经...

【课程推荐】2021/5/8~5/9 Angular前端开发框架入门班

课程目标 课程前半段主要让学员建立Angular开发框架相关基本观念,并透过Angular CLI建...