单行注释
// 注释内容
多行注释
/* 多行 注释 内容 */
文档注释
/** * 文档注释 * @author 作者名 * @version 版本号 * @since 指明需要最早使用的jdk版本 * @param 参数名 * @return 返回值情况 * @throws 异常抛出情况 */ 生成文档doc命令:javadoc -encoding UTF-8 -charset UTF-8 Demo.java
abstract | assert | boolean | break | byte |
---|---|---|---|---|
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | strictfp | short | static | super |
switch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
byte:
short:
int:
long:
float:
double:
double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数;
浮点数的默认类型为 double 类型;
double类型同样不能表示精确的值,如货币;
默认值是 0.0d;
例子:
double d1 = 7D ; double d2 = 7.; double d3 = 8.0; double d4 = 8.D; double d5 = 12.9867;
7 是一个 int 字面量,而 7D,7. 和 8.0 是 double 字面量。
boolean:
char:
类、数组、接口,默认值都是null。
if 结构
// if单选择结构: if(布尔条件){ // 执行代码 } // if双选择结构: if(布尔条件){ // 执行代码1 }else{ // 执行代码2 } // if多选择结构: if(布尔条件1){ // 执行代码1 }else if(布尔条件2){ // 执行代码2 }else{ // 执行代码3 } // if嵌套结构: if(布尔条件){ if(子布尔条件){ // 执行代码1 }else{ // 执行代码2 } } // 如果执行代码只有一行,则可以大括号可省略不写 if(a == 1) System.out.print(a); else if(a == 2) System.out.print(b);
switch 多选择结构
/* expression变量类型支持 byte,short,int,char,Java7开始支持String类型 */ switch(expression){ case value1: // 执行代码1 break; // 跳出switch代码块,可选,如果不写,则继续执行下面的选项中代码 case value2: // 执行代码2 break; // 跳出switch代码块,可选,如果不写,则继续执行下面的选项中代码 ... default: // 上面选项都不满足,默认执行下面代码 // 执行代码3 }
循环结构:
for 循环
for(初始化; 布尔表达式; 更新){ // 循环体 } /* 增强for循环,jdk5新增 */ for(对象 变量名 : 对象的集合){ // 循环体 }
while 循环
/* 布尔表达式不为false,则循环体一直执行 */ while(布尔表达式){ // 循环体 }
do while 循环
/* 布尔表达式不为false,则循环体至少会执行一次 */ do{ // 循环体 } while(布尔表达式);
方法是语句的集合,用于解决一类问题或执行一个功能。方法包含于类或对象中,可以在其他地方被引用。
方法设计时,最好遵从原子性,即一个方法只完成一个功能,这样有利于维护和扩展。
/* 方法定义 */ 修饰符 返回值类型 方法名(形式参数){ // 方法体 } /* 有返回值,且返回值类型为int,方法最后一行需要返回return,例 */ public int add(int a, int b){ return a+b; } /* 无返回值,用void关键字表示,方法最后无需写return,例 */ public void add(int a, int b){ System.out.print(a+b); } /* 静态方法使用修饰符static,例 */ public static int add(int a, int b){ return a+b; }
一个类中,两个方法,方法名相同,但方法参数列表不同(个数不同、或参数类型不同、参数排列顺序不同等),则这两个构成重载。
public void add(int a, int b){ // ... } public void add(int a, int b, int c){ // ... } public void add(String a, String b){ // ... }
jdk1.5开始,Java支持传递同类型的可变个数参数给一个方法。一个方法中只能指定一个可变参数,且它必须位于方法的最后一个参数。
/* 定义:数据类型... 参数名 例:int... numbers */ public int add(int... numbers){ int sum = 0; for(int i = 0; i < numbers.length; i++){ sum += numbers[i]; } return sum; }
递归就是方法自己调用自己,利用递归可以用简单的语句解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来解决。
递归结构包含两个部分:
/* 阶乘算法 */ public static int factorial(int n){ if(n == 1) return 1; // 递归头 else return n * factorial(n-1); // 递归体 }
数组就是相同类型的数据的有序集合,其中集合中的每一个数据称之为数组元素,每个数组元素可以通过一个下标来访问它。
特点:
/* 数组可以通过三种方式定义,下面以int类型数组为例 */ int[] arr1 = new int[3]; // 方式一:需要申明数组长度,此处设了3 arr1[0] = 1; // 下标0赋值 arr1[1] = 10; // 下标1赋值 arr1[2] = 23; // 下标2赋值 int[] arr2 = {1, 10, 23}; // 方式二:直接定义数组元素 int[] arr3 = new int[]{1, 10, 23}; // 方式三:无需申明长度,直接定义数组元素 // 获取数组长度,使用length属性 int arrLength = arr1.length; // 遍历数组 for(int i = 0; i < arr2.length; i++){ System.out.println(arr2[i]); }
多维数组可以看成是数组的数组,即数组的每个元素也是个数组。
以二维数组为例:
int[][] arr1 = new int[3][3]; int[][] arr2 = {{1, 2, 3},{4, 5, 6},{7. 8. 9}};