阿姆斯壮的一小步-準备好装备
在网路上搜寻、下载并安装好最新的JDK(JAVA编辑器套装)
设定系统path 让JAVA在任何路径下都能直接启动
- 点选win开始选单->输入「环境变数」进行搜寻
- 在环境变数中找到Path变数,将JAVA资资料夹中的bin资料夹新增进Path变数里面
例:C:\Program Files\Java\jdk-11.0.1\bin
确认步骤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 - 山本 道子