4 Java 程序结构与基本语法

4.1 类结构

  如下代码:

public class Test {
	public static void main(String[] args){
		System.out.println("hello world!");
	}

}

  结构为:

public class Test { 
	
}

   因为Java 是面向对象的语言,一个程序的基本单位就是 class,class 是关键字,这里定义的 class 名字就是 Test

注:

  • 类名命名规范:
    • 1)类名必须以英文字母开头,后接字母,数字和下划线的组合。
    • 2)习惯以大写字母开头
    • 3)类的命名要有其意义,比如我这个类名为 Student,则表示这是一个学生类,不可随便命名为 A、B、C。
  • public 是修饰符,表示这个类是公开的。
  • 一个文件只能存在一个 public class,可以有多个 class,比如:
    	public class Test {
    		public static void main(String[] args) {
    			System.out.println(Node.value)
    		}
    	}
    	class Node {
    		public static String value = "node";
    	}
    

4.2 方法

  在类里面,可以定义若干个方法,但是程序入口有且只有一个。

public class Test {
	public static void main(String[] args) {  // 程序入口
		// 代码...
	}
}
  • 这里的方法名为 main;
  • 返回值类型为 void,表示没有任何返回值;
  • 上述的 public 既可以修饰类,也可以修饰方法;
  • static 是关键字,修饰的方法表示静态方法, 关于这个,讲解《内存分析》的时候再说明;
  • main 方法括号里的是参数,args 是参数名(可以其他命名),String[] 表示该参数是 String 类型的数组;main 方法固定这样写。

注:方法名命名规范:

  • 方法名命名和类名命名规范类似,只是方法名的首字母要小写(大写也不会报错,只不过合格的程序员要遵循这种规范)。
  • 方法名命名要有其意义,如 getMax(),表示这个方法的作用是获取最大值;不可随便命名为 a()、b()、c()。

4.3 语句

  在方法内部,语句才是真正的执行的代码,每条语句必须以分号结束。

public class Test {
	public static void main(String[] args) {
		System.out.println("hello world!"); // 输出语句
	}
}

输出语句:
  System.out.println() 为输出语句,即括号内的会打印到控制台上。

4.4 注释

  在 Java 程序中,注释是一种给人阅读的文本,不是程序的一部分,所以编译器会自动忽略注释。

  优秀的程序员必须习惯写注释,告知这个类、这个方法是干什么的,这个属性是干什么的,让人一目了然。我们要清楚一点,3 个月前的你和 3 个月后的你完全不是同一个人。不写注释,读起代码十分费劲。

  Java 有 3 种注释。

(1) 单行注释

   以双斜线开头,直到这一行的结尾结束:

public class Test {
	public static void main(String[] args) {
		System.out.println("hello world!"); // 这是单行注释
	}
}

(2) 多行注释

  以 /* 星号开头,以 */ 结束,可以有多行:

public class Test {
	public static void main(String[] args) {
		System.out.println("hello world!"); // 这是单行注释
	}
	/*
	这是多行注释,
	获取最大值
	*/
	public static int getMax(int num1, int num2) {
		return num1 > num2 ? num1 : num2;
	}
}

(3)另一种多行注释

  以 /** 开头,以 */ 结束,如果有多行,每行通常以星号开头,需要写在类和方法的定义处,可以用于自动创建文档。

/**
* 这是一个测试类
* @auther pkyShare
*/
public class Test {
	public static void main(String[] args) {
		System.out.println("hello world!"); // 这是单行注释
	}
	/**
	* 获取最大值
	* @param num1 
	* @param num2
	* @return int
	*/
	public static int getMax(int num1, int num2) {
		return num1 > num2 ? num1 : num2;
	}
}

特别注意:虽然 Java 程序对格式没有明确的要求,多几个空格或者回车不影响程序的正确性,但是我们要养成良好的编程习惯。

  • 1)命名规范必须遵循以上规则。
  • 2)注意代码要对齐,如正确写法:
public class Test {
	public static void main(String[] args) {
		System.out.println("hello world!"); // 这是单行注释
	}
	public static int getMax(int num1, int num2) {
		return num1 > num2 ? num1 : num2;
	}
}

  不要写成如下:

public class Test {
public static void main(String[] args) {
System.out.println("hello world!"); // 这是单行注释
	}
public static int getMax(int num1, int num2) {
return num1 > num2 ? num1 : num2;
	}
}
  • 3)在写表达式的时候,比如 >、=、< 这些表达式符号时,两边的变量最好空格,如a > b,这是一种优雅的代码。尽量不要写成 a>b。

4.5 关键字

  上述提到 public、class、static 等这些都是关键字,那 Java 有哪些关键字呢?如下表所示:

定义数据类型的关键字
classvoidbyteshortintlong
floatdoublecharbooleaninterface
定义流程控制的关键字
ifelseswitchcasedefaultwhile
doforbreakcontinuereturn
定义访问权限修饰符的关键字
publicprotectedprivate
定义类、方法、变量修饰符的关键字
abstractfinalstaticsynchronized
定义类与类之间关系的关键字
extendsimplements
定义访问修饰符的关键字
truefalsenull
定义建立实例及引用实例,判断实例的关键字
newthissuperinstanceof
异常处理的关键字
trycatchfinallythrowthrows
包的关键字
packageimport
  另外 Java 还有 3 个保留字,它们不是关键字,而是文字。包含 Java 定义的值。和关键字一样,它们也不可以作为标识符使用。
保留字
truefalsenull

  这么多关键字我们到底该怎么记怎么学,这不用着急,随着深入学习,这些关键字都会一一掌握。

4.6 标识符

  什么是标识符?就是程序中我们自己命名的,比如上述类名,方法名和变量名等这些都是标识符。它由英文小写字母、数字字符、$ 和 _ 组成。

  在这里统一一下命名规则:

  • 不能以数字开头
  • 不能是 Java 的关键字和保留字
  • 区分大小写
  • 驼峰式写法
  • 见名知义

  比如:Student(学生)、Teacher(老师)、Car(车)、getMax(获取最大值)

4.7 常量与变量

(1)常量

  固定不变的数据。

(2)变量

  用于存储程序执行中用到的数据,存储的数据时可改变的。

(3)定义格式

  • 变量:数据类型 变量名 = 初始化值;    如:int num = 4;
  • 常量:
    • 数据类型 fianl static 常量名 = 初始化值; 这是静态常量。    如:public static final double PI = 3.14;
    • 数据类型 final 常量名 = 初始化值; 这是普通常量。    如:public final int x= 3;
    • 还有其他定义常量的方式,之后会讲解。

4.8 运算符

  我们学习数学也知道,+、- 、*、/、>、=、< 这些运算符,这里需要区分一下:

(1)赋值运算符(=、+=、-=、*=、/=、%=)

i :int a = 3;
ii :int b = a;
iii :a += 2;
  • = 称为赋值,如上述中的意思是将 3 赋值给 a;将 a 赋值给 b(前提是 a 必须初始化)。
  • +=,如 iii 中,一般可写成 a = a + 2;同理 -=、*=、/=、%= 一样的道理。

注:

short a = 3;
a += 3;
short b = 3;
b = b + 3;

  上述代码中,a 结果是正确的,然而 b 是编译不通过的。为啥?这就涉及到默认转换(隐式转换)强制转换的概念。

  • 隐式转换:小类型转成大类型,联想上篇文章说到数据类型的范围,由小到大则为隐式转换。代码中 b = b + 3,由于 3 默认是 int 类型,编译器会默认将 b + 3 隐式转换为 int 类型,然后 int 类型的数据赋值给 short 类型(即大类型 --> 小类型),因此就编译不通过。
  • 强制转换:大类型转成小类型。
    • 格式为 目标类型 变量名=(目标类型)(被转换的数据);
    • 代码中 a += 3,等价于 a =(short)(a + 3),强制将 a + 3 转为 short 类型,因此编译通过。
  • 进行强制转换时需要谨慎(考虑范围)。

(2)算术运算符(+、-、*、/、%、++、–)

i :int a = 3;
ii :int b = a++;
iii :int c = ++a;
iv :int d = (a++) + (++a) + (a*10);
v :int e = a / 2;
vi :int f = a % 2;
  • ++ 相当于 + 1,但需要注意前置和后置的区别,
    • 如 ii 中,是将 a 赋值给 b,然后语句结束后 a 再 + 1,比如 a 初始值为 3,执行 ii 后,b 值为 3,a 最后 + 1 值为 4;
    • 如 iii 中,是 a 先 + 1 值为 4,然后再将 a 的值赋值给 c ,c 值为 4。(这里跳过 ii 讲解)
  • / 表示取整的意思,对于 int 类型,如 v 中,3 / 2 得 1 余 1 ,取商 1。
  • % 表示取模的意思,对于 int 类型,如 vi 中,3 % 2 得 1 余 1 ,取余数 1。

输出语句内的运算:
  System.out.println(1 + 1 + “1”);   // 输出为 21;
  System.out.println(“1” + 1 + 1);   // 输出为 111;

  这里的 + 号有两种含义:
  (1)加号用于基本数据类型,表示加法运算符。
  (2)加号用于 String 类型时,表示连接符。
  1 + 1 + “1”,先执行 1 + 1 为 2,然后 2 再和 “1” 连接,则变成字符串 “21”;
   “1” + 1 + 1,先执行 “1” + 1 连接成字符串 “11”,然后字符串 “11” 再和 1 连接变成字符串 “111”。

(3)关系运算符(>、==、<、>=、<=、!=)

  != 表示“不等于”。关系运算符的结果是 boolean 类型,true 或者 false。

int a = 3;
int  b = 3;
System.out.println(a == b);

注:== 不要写成 =。

(4)逻辑运算符

  &(与) 、|(或) 、!(非)&&(短路与)、||(短路或)、^(异或)

说明

  • &:一个为假,则为假,逻辑与,从左往右判断,直到结尾才停止。如 2 > 1 & 3 < 1 & 0 < 1,这个一直判断到 0 < 1 才返回 false。
  • &&:一个为假,则为假,短路与,从左往右判断,当遇到 false 则停止判断。如 2 > 1 & 3 < 1 & 0 < 1,判断到 3 < 1 则立即返回 false。
  • | :一个为真,则为真,逻辑或,从左往右判断,直到结尾才停止。
  • || :一个为真,则为真,逻辑或,从左往右判断,当遇到 true 则停止判断。
  • ! :非 false 则 true,非 true 则 false。
  • ^ :两个不同,则为 true,相同则为 false。

(5)三目运算符

  (关系表达式) ? 表达式1 : 表达式2;

  • 如果关系表达式结果为 true,运算后的结果是表达式1;
  • 如果关系表达式结果为 false,运算后的结果是表达式2

如:

int a = 3;
int b = 4;
int c = (a > 5) ? a : b;

  最终 c 值为 4。
  如 : 求 三个数的最大值,用三目运算符表示。

4.9 表达式

   操作数 + 运算符,组成一个表达式。如 3 + 4,这是一个加法运算, + 就是运算符,3、4 就是参与运算的操作数,3 + 4 整体就是一个算术表达式。

4.10 转义字符(\)

  一些字母前加“\”,表示转移字符。直接了解如下常见转义字符的作用。

符号作用
\n换行
\t水平制表
\’单引号
\”双引号
\\产生一个斜杆

  例子:

(1)输出语句不用“ln”进行换行(输出语句的 ln 表示换行的意思)。

System.out.print("姓名:pkyShare\n年龄:**\n学校:*****");

在这里插入图片描述

(2)使用制表符优化显示效果

System.out.println("姓名\t\t年龄\t学校");
System.out.println("pkyShare\t**\t*****");

在这里插入图片描述

  其他的自行尝试。

可到牛客网做练习。

至此,Java 程序结构大体了解了,接下来请看《5 Java 条件分支语句与循环语句

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值