Hello World!
helloJava.java
public class HelloJava {
public static void main(String[] args) {
System.out.println("Hello, world! Hello, Java!");
}
}
Java 文件名务必要与其内容中的类目完全相同,否则会编译报错。
编译:javac
javac fileName.java
该命令会将 fileName.java 编译成 fileName.class。
运行:java
java 类名
注意:直接是类名。不要写文件名(带后缀的),会报错。
Java 严格区分大小写。
基本类型
- 整数类型
- byte:-128 ~ 127
- short:-32768 ~ 32767
- int:-2147483648 ~ 2147483647
- long:-9223372036854775808 ~ 9223372036854775807,该类型数值,需要在结尾添加
l
- 浮点数类型
- float,可最大表示3.4x10。该类型数值,需要在结尾加
f
- double
- float,可最大表示3.4x10。该类型数值,需要在结尾加
- 字符类型
- char,注意这不是字符串!是字符!只能存储单个字符,用单引号包围。比如 ‘a’,’中’。
- 布尔类型
- Boolean
【在数字中使用下划线】
<br />Java 7的一个特性是数字文字中的下划线。可以在任何数字文字的数字之间放置下划线,如:`int`,`byte`,`short`,`float`,`long`,`double`。在数字文字中使用下划线将它们分成组以获得更好的可读性。
public class UnderscoreNumericLiterals {
public static void main(String[] args) {
long ccNumber = 1234_5678_9012_3456L;
long ssn = 999_99_9999L;
float pi = 3.14_15F;
long hexadecimalBytes = 0xFF_EC_DE_5E;
long hexadecimalWords = 0xCAFE_BABE;
long maxOfLong = 0x7fff_ffff_ffff_ffffL;
byte byteInBinary = 0b0010_0101;
long longInBinary = 0b11010010_01101001_10010100_10010010;
int add = 12_3 + 3_2_1;
System.out.println("ccNumber="+ccNumber);
System.out.println("ssn="+ssn);
System.out.println("pi="+pi);
System.out.println("hexadecimalBytes="+hexadecimalBytes);
System.out.println("hexadecimalWords="+hexadecimalWords);
System.out.println("maxOfLong="+maxOfLong);
System.out.println("byteInBinary="+byteInBinary);
System.out.println("longInBinary="+longInBinary);
System.out.println("add="+add);
}
}
数字文字中下划线的技巧:
- 下划线只能放在数字之间。
- 不能在小数位,L/F后缀或基数前缀旁边加下划线。因此
3._14,110_L
,0x_123
都是无效并将导致编译错误。 - 数字之间允许多个下划线,因此
12___3
是有效数字。 不能在文字的末尾添加下划线。因此
123_
无效并导致编译时错误。int _10=0;
将下划线放在数字文字的前面时,会将它视为标识符而不是数字文字。所以不要混淆它。
int x = _10
引用类型
常量:final
final
,作用跟 JavaScript 中的const
类似。定义一个变量为常量,不可更改。var 关键字
StringBuilder a = new StringBuilder();
<=>
//省略变量类型:
var a = new StringBuilder()
// 编译器会根据赋值语句自动推断出变量 a 的类型是 StringBuilder
变量的作用范围
public class VariableScope {
public static void main(String[] args) {
int i = 0; // 变量 i 从这里开始定义
{
int x = 1; // 变量 x 从这里开始定义
{
String s = "Hi!"; // 变量 s 从这里开始定义
System.out.println("第一个变量 s 的值:" + s);
}// 变量 s 作用域到此结束
/*
注意,这是一个新的变量 s ,它和上面的变量同名
但是因为作用域的不同,它俩是两个不同的变量
*/
String s = "Hello!";
System.out.println("第二个变量 s 的值:" + s);
} // 至此,x 和 s 的作用域都到此结束
System.out.println("该方法中命名的第一个变量 i 的值:" + i);
}
}
整数运算
四则运算
public class Arithmetic {
public static void main(String[] args) {
int i = (100 + 200) * (99-88);
int o = 7 * (34 * (45 / 5));
int p = 11 * (13 / 3); // => 11 * 4
// 两个整数相除,只会得到整数部分
System.out.println(i);
System.out.println((o));
System.out.println(p);
}
}
溢出
public class Overflow {
public static void main(String[] args) {
int i = 2147483640;
int j = 15;
int sum = i + j; // 结果溢出了……
System.out.println("i + j 的结果为:" + sum);
//为解决溢出问题,将数据类型从 int 换成 long 就好了
long q = 2147483640;
long w = 15;
long sum1 = q + w;
System.out.println("q + w 的结果为:" +sum1);
int e = 123;
e += 100;
System.out.println("e 被赋值后:" + e);
}
}
自增/自减
public class SelfIncreaseAndDecrease {
public static void main(String[] args) {
int n = 3300;
System.out.println("n 的初始值:" + n);
n ++; // => n = n + 1
System.out.println("n ++:" + n);
n --; // => n = n -1
System.out.println("n --:" + n);
}
}
移位运算
public class ShiftOperation {
public static void main(String[] args) {
int n = 7;
System.out.println("n 的初始值:" + n);
int a = n << 1;
System.out.println("对 n 进行左移 1 位:" + a);
int a1 = n << 2;
System.out.println("对 n 进行左移 2 位:" + a1);
int a2 = n << 3;
System.out.println("对 n 进行左移 2 位:" + a2);
int a3 = n << 28;
System.out.println("对 n 进行左移 28 位:" + a3);
int a4 = n << 29;
System.out.println("对 n 进行左移 29 位:" + a4);
System.out.println("————————————————————————");
int m = 28;
System.out.println("m 的初始值:" + m);
int M = m >> 1;
System.out.println("对 m 进行右移 1 位:" + M);
int M1 = m >> 2;
System.out.println("对 m 进行右移 2 位:" + M1);
int M2 = m >> 3;
System.out.println("对 m 进行右移 3 位:" + M2);
}
/*
左移实际上就是不断地 ×2 ,右移实际上就是不断地 ÷2 。
*/
}
其他注意事项
IntelliJ IDEA
Git 提交
在一个(父级)项目中创建了一个子项目(因为学习整合在一起),对于子项目中文件的 Git 相关提交,务必不要在父级项目中提交,因为会在 IntelliJ IDEA 中的代码分析中产生如下类似错误
虽说也可以直接忽略错误进行提交,但总觉不爽。另外就是记录下类似情况错误的解决方案。