ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 编程语言的基本要素 ## 标识符和关键字 在编程过程中出现的单词统称为标识符。 标识符出现的位置包括:包的命名、类文件的命名、变量的命名、方法的命名...... 关键字:Java 保留的一些单词。 标识符的命名规范: * 只能出现Unicode字符(建议用英文的大小写字母)、下划线\_、美元符$、数字 * 数字不能作为开头字符 * 自定义的标识符不能出现关键字 demo1、demo\_1、~~demo-1~~、~~1demo~~、$1demo、~~class~~ **分隔符** * 花括号 {}:定义代码块,逻辑上是一个整体,包含有类的主体、方法主体、静态代码块的主体、条件/循环结构的执行体。 * 分号 ;:语句的结束,在 Java 中必须要用 ; 号表示语句的结束。可以出现在一行或者多行。 * 方括号 \[\] :用于数组中。 * 圆括号 \(\) :在方法中声明形式参数,在调用方法时传入实际的参数,用于在表达式运算时的优先级。 * 空格:在编写 Java 代码的过程中,一般只会出现3类空格的情况:单个空格、Tab制表位、回车换行。 * 圆点:用于对象或者类与其成员之间的分隔,表示调用类/对象的属性或者方法。 > 在 Java 中,只要看到首字母大写的单词,这个单词所表现的就是 类,在变量或者方法的命名中,一般采用驼峰命名法则,Java 大小写敏感。 ## 注释 注释是编写代码非常非常重要的环境,一般好的程序,注释写的代码量都会比程序多。 > 注释是不会被程序执行的语句。 注释可能出现的位置: * 类、方法、属性的上部分(一般采用文档注释) * 方法体内的业务逻辑操作(一般性注释) 单行注释、多行注释、文档注释 ```java /** * 这是一个定义圆的类 * 此处是文档注释 **/ public class Circle { /** * 定义圆的半径 */ double r; /** * 定义圆的周长 */ void zc(int k) { // 从控制台打印输出圆的周长值,此处是单行注释 System.out.println("该圆的周长是:" + (2 * 3.14 * r)); } void mj() { /* 从控制台打印输出圆的面积 作者:xxx 此处是多行注释 */ System.out.println("该圆的面积是:" + (3.14 * r * r)); } public static void main(String[] args) { Circle c1 = new Circle(); c1.r = 2.0; c1.zc(); c1.mj(); } } ``` > 查看 [JDK 帮助文档](http://tool.oschina.net/apidocs/apidoc?api=jdk_7u4),借助 JDK 中 src.zip 中的 Java 源码学习。 ## 变量 向内存中写入数据,在内存中标注其存储的位置。 **定义变量的语法:** ``` [修饰符] 数据类型 变量名; ``` **变量赋值:** ``` 变量名 = 值; ``` **合并在一起:** ``` 数据类型 变量名 = 值; ``` > 在一个 Java 文件中,能定义多个类,但是只能一定一个 public 修饰的类。 ```java public class Demo1 { public static void main(String[] args) { // 定义变量 int x; x = 10; double y = 3.14; // int x = 10; System.out.println(x); System.out.println(y); String s1 = "Tom"; String s2 = "Helen"; String s3 = "Tom"; String s4 = "Hello World"; String s5 = "Hello "; String s6 = "World"; String s7 = "Hello " + "World"; Student tom = new Student(); tom.name = "tom"; tom.age = 20; tom.sex = true; tom.school = "南通大学"; tom.listen(); } } class Student { String name; int age; boolean sex; String school; void listen(){ System.out.println(name + "在上课。"); } } ``` ## 数据类型 **在 Java 中一共有 8 种基本数据类型** 数值型 * 整型:byte\(-128-127\)、short\(15次方\)、**int**\(31次方\)、long\(63次方\) * 浮点型:float\(38次方\)、**double**\(308次方\) 字符类型:表示的单个字符(Unicode编码字符) * char,用单引号 * 在字符中,除了单个字母外,还可以使用转义字符 布尔类型:只有两个值 真和假 true false * boolean : true/false > 在实际的开发过程中,我们使用到的基本数据大部分情况下,整数型使用 int 类型,浮点型使用 double 类型。 **引用数据类型** 类类型和数组,在后续学习面向对象介绍。 ## 运算符 ### 算术运算符 ``` 有:+ - * / % ++ -- ++:自增 --:自减 ``` 实例 ```java int i = 10; int j = 20; System.out.println(i + j); // 30 System.out.println(i++); // 10 System.out.println(i); // 11 System.out.println(++i); // 12 ``` ### 赋值运算符 ``` 有:= += -+ *= /= %= ``` 实例 ```java int i = 10; int j = 20; i = j + 5; // 25 i += 5; // i = i + 5; 30 System.out.println(i); // 11 ``` ### 比较运算符 ``` 有:> < >= <= == != ``` > 比较运算符连接的表达式返回的结果是:boolean ### 逻辑运算符 ``` 有:与 && 或 || 非 ! ``` 与:只要有一个为假,那么整个表达式就是假; 或:只要有一个是真,那么整个表达式就是真; ### 三目运算符 ``` expression ? true-值 : false-值 ``` 实例 ```java int age = 10; String ageStr = age > 18 ? "成年" : "未成年"; ``` ### 运算符的优先级 ![](https://gss2.bdstatic.com/-fo3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike80%2C5%2C5%2C80%2C26/sign=59a3e1017d3e6709aa0d4dad5aaef458/63d9f2d3572c11df57c9a205612762d0f703c2f8.jpg) > 如果不了解优先级,可以使用\(\)强制优先级。 > > 赋值运算符优先级是最低的。 ## 流程控制 在 Java 甚至在绝大多数的编程语言中,流程控制语句就以下三类: * 顺序结构 * 分支选择结构(判断) * 循环结构 ### 分支选择结构 **if 结构** 语法: ``` if (logic expression) { true : statement; } ``` ```java public static void main(String[] args) { int age = Integer.valueOf(args[0]); if (age > 18) { System.out.println("我已经成年了。"); } } ``` **if-else 结构** 语法: ``` if (logic expression) { true : statement; } else { false : statement; } ``` **if-else if 结构** ```java if (age > 0 && age <= 18) { System.out.println("我是少年。"); } else if (age <= 30) { System.out.println("我是青年。"); } else if (age <= 50) { System.out.println("我是中年。"); } else{ System.out.println("我是老年。"); } ``` **switch 结构** > 多个离散值的分支选择结构 ```java public static void main(String[] args) { int color = Integer.valueOf(args[0]); switch(color) { case 1 : { System.out.println("赤"); break; } case 2 : { System.out.println("橙"); break; } case 3 : { System.out.println("红"); break; } case 4 : { System.out.println("绿"); break; } case 5 : { System.out.println("青"); break; } case 6 : { System.out.println("蓝"); break; } case 7 : { System.out.println("紫"); break; } default: { System.out.println("没有找到颜色"); break; } } } ``` > 在 JDK1.7 之后,switch后面的分支表达式是可以输入 字符串 的,之前只支持基本数据类型中的整型和字符型。 > > **在 case 语句中,最后一句务必写上 break;** > > 在实际开发过程,switch 使用频率是比较小的,一般都会使用 if-else 结构替代。 ### 循环结构 循环结构可以在满足特定循环条件的情况下,反复的执行某一段代码。 循环结构中可能包含的内容有: * 初始化语句(init\_statement) :一条或者多条语句构成,用于做一些循环之前的初始化工作。 * 循环条件(test\_expression):是一个 boolean 类型的表达式,用于控制循环是否可以被执行或者结束。 * 循环体(body\_statement) :如果条件允许,循环体会被反复执行。 * 迭代语句(Iteration\_statement):在一次循环体结束完成之后,对循环条件进行求值,通常用于控制循环条件中的变量,使得循环在合适的时候结束。 **while 结构** 语法: ``` [init_statement]; while (test_expression) { body_statement; iteration_statement; } ``` 实例 ```java int i = 1; int sum = 0; while (i <= 10) { sum = sum + i; i = i + 1; // sum += i++; } System.out.println(sum); ``` **do-while 结构** ``` do { body_statement; iteration_statement; } while (test_xepression) ``` > 在一般的开发过程中,不会使用 do-while 循环的。 **for 结构** 语法 ``` for (init_statement; test_exprssion; iterator_statement) { body_statement; } ``` 实例 ```java int sum = 0; for (int i = 1; i <= 10; i++) { sum = sum + i; } System.out.println(sum); ``` > for 循环一般用在 迭代次数 是固定的循环中