Java筆記01:從Hello World開始

Hello World

來看看第一個程序吧:

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("wmq天下第一可愛");
        System.out.println("就不用HelloWorld,嘻嘻");
    }
}

這個程序可以說簡單了,但是有幾點需要注意的地方Java遵循萬物皆對象的思想,程序必須放在類中。和C語言一樣,必須有main()函數來作爲程序入口,但在面向對象的術語中,這裏的main()要稱爲方法(method)。
Java程序以類(class)爲基本單位,publicstatic被稱爲修飾符,每個.java文件中只能有一個public類,並且這個類名要與文件名同名。Java規定main()必須像上面這樣寫,具體原因後續解釋。
類的命名:Java規範推薦類名要用大駝峯法,即首字母要大寫,如果包含多個英語單詞,每個單詞首字母大寫。

MyName
MyAge
HelloWorld

而方法名推薦小駝峯,區別只是第一個首字母不用大寫:

myName
myAge
helloWorld

創建對象

使用new關鍵字創建對象:

new String("疏影橫斜水清淺,暗香浮動月黃昏。");

我們從String類創建了一個實例對象,還需要有一個引用來使用它。

String s = new String("abc");

就像在C語言中定義一個普通變量一樣簡單,這樣的類型在Java中稱爲引用類型。由於字符串的使用實在是頻繁,所以這個還有簡潔寫法:

String s = "abc";

基本類型

還記得在C語言中定義像intfloat這樣的變量根本用不着new,當然C裏面也沒有,爲了簡化程序,在Java中也有一些基礎類型是不用new的。

通常new出來的對象都是保存在堆內存中的,以此方式創建小而簡單的變量往往是不划算的。所以對於這些基本類型的創建方法,Java使用了和 C/C++一樣的策略。也就是說,不是使用new創建變量,而是使用一個“自動”變量。 這個變量直接存儲"值",並置於棧內存中,因此更加高效。
基本類型 大小 最小值 最大值 包裝類型
boolean Boolean
char 16 bits Unicode 0 Unicode 216-1 Character
byte 8 bits -128 +127 Byte
short 16 bits -215 +215-1 Short
int 32 bits -231 +231-1 Integer
long 64 bits -263 +263-1 Long
float 32 bits IEEE754 IEEE754 Float
double 64 bits IEEE754 IEEE754 Double
void Void
與C語言不同,Java沒有無符號數,並且所有相同類型在不同系統所佔空間大小是一致的。

這些類型可以很方便的使用,和在C語言中基本沒差別:

char x = 'a';
int money = 123;
float pi = 3.14;

如果要把這些值保存在堆內存上,可以使用它們的包裝類型像前面創建字符串對象那樣使用。
定義常量要用final而不是const

final int age = 18;

對常量重新賦值會引起報錯。

var

對於一些比較長的類型名:

var e = new VeryVeryLong(); // 和下面的等同
VeryVeryLong e = new VeryVeryLong();

var相當於可以幫助你少打幾個字。

註釋

Java註釋也和C中差不多:

// 這是單行註釋

/*

這是多行註釋

*/

/**
*這個有點特殊
*比一般的多行註釋
*多了個星號,每行開頭還有星號
*可以用來自動創建文檔的註釋
*/

char類型

Java中的char類型用兩個字節表示,可以表示一個Unicode字符,也就是說可以表示部分中文,還有一些特殊的符號之類的。還可以用轉移序列\u來表示一個Unicode字符。比如'\u03C0'表示希臘字母π。

和在C語言中一樣,單引號表示字符char類型,"A"這樣雙引號括起來的是字符串。習慣了Python的人要注意這一點。

boolean類型

boolean布爾類型,就兩種值,falsetrue

需要注意的是,在Java中布爾值不能和整型值相互轉換。而在C中可以用0代替false,用非0值代替true。事實上在C語言中布爾量也就是無符號整數類型。

短路運算

對於一個布爾運算的表達式,如果可以提前確定結果,就不再計算後續內容。
舉個栗子:

boolean flag = (3 > 5) && (2 / 0 == 1);

這裏編譯器不會報後面2除以0的錯誤,因爲&&與運算是全爲真才爲真,這裏第一個3 > 5已經爲假,後面的計算就不會再做了。類似的,對於||或運算,如果前面已經確定爲真,後面的內容也不會計算。
Java也有三元運算符? :,用法和C語言一樣。

字符串

字符串不屬於基本類型而是引用類型。

String s1 = ""; //字符串可以爲空,長度爲0
String s2 = "hello";
String s3 = "world";
與C語言不同,Java字符串並沒有以\0做結尾哦。

字符串是不可變的。

public class Main {
    public static void main(String[] args) {
        String s = "hello";
        System.out.println(s); // 顯示 hello
        s = "world";
        System.out.println(s); // 顯示 world
    }
}

可以看到打印的s的值變了,但是實質上引用類型是將s這個引用存在棧內存中,而字符串對象helloworld則存在堆內存中,引用類型就有點像C語言中的指針,s一開始指向了hello,後來我們又創建了一個內容爲world的字符串對象並讓s指向了它。

字符串可以用+來拼接,並且可以和其它類型拼接,在這之前其它類型會被自動轉成字符串。

public class Main {

    public static void main(String[] args) {
        String s1 = "I love ";
        String s2 = "you ";
        int a = 3000;
        String s = s1 + s2 + a;
        System.out.println(s);
    }
}
和Python一樣,Java現在可以用三對雙引號表示多行字符串,但是這是Java13纔有的新特性。

輸入

在命令行中輸出只需要使用System.out.println()就行,但是輸入就比較麻煩了。
首先需要構造一個Scanner對象:

Scanner in = new Scanner(System.in);

獲取字符串輸入:

String s = in.nextLine();

獲取整數:

int i = in.nextInt();

別急着運行你的程序,現在還要在最開始添加一行import java.util.*;導入這個包才能使用輸入。

掃碼關注公衆號:
圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章