一.Java的标识符

1. 什么是标识符?


Java中对各种变量、方法和类等要素命名时使用的字符序列叫做标识符。


2. 标识符的命名规则:


(1) 标识符由字母、下划线 “_”、美元符 $或是数字组成。

(2) 标识符应以字母、下划线、美元符开头

(3) Java标识符注意区别大小写,长度无限制。


二、Java常量

java中的常量值用字符串表示,用来区别不同的数据类型。“常量”还会用在其他方面表示值不可变的变量。

三、Java变量

Java变量是程序中最基本的存储单元,包括变量名、变量类型和作用域。注:每一个变量在使用前都要进行声明,声明为 数据类型+变量名[=value]
   在Java程序执行过程中,内存管理如下所示:
    heap(堆):存放运算符new出来的东西
    stack(栈):局部变量
    data segment(数据段):静态变量和字符串常量
    code segment(代码段):存放代码

四、Java局部变量和成员变量

1. 方法体内部变量声明的变量(包括形参)称为局部变量;

方法体内部是指与方法对应的大括号内部

2. 在方法体外,类体内声明的变量为成员变量;

public class Test {
private String name;//成员变量,也是全局变量

public void changeName() {
String n = "HelloWorld";//n就是局部变量
name = n;
}
}

五、Java数据类型的划分

 有两种类型:基本数据类型和引用数据类型

1.1基本数据类型:

数值型:整数类型(byte, short, int, long)	浮点类型(float, double)
   字符型:char
  布尔型:boolean

1.2 引用数据类型

类:class 	接口:interface 	数组


基本数据类型转换: boolean类型不能转换为其他的数据类型。 注意:容量小的类型自动转换成容量大的数据类型。 byte,short,char->int->long->float->double 1.byte,short,char之间不能进行相互转换,三者在计算时首先会转换成int类型。 2.容量大的数据类型转换成容量小的数据类型时,加上强制转换符,可能会造成精度降低或是溢出


六、自加和自减运算符 ++(--)

1. 在前时先运算再取值
	如:i = 1; int a = i++; 此时 a = 1; i++后,i 的值由1变为2。
2. 在后时先取值再运算
	如:i = 1; int b = ++i; 此时 b = 2; ++i后,i 的值也为2。


七、字符串连接符

1. “+”除了算术加法运算外,还可用于对字符串进行连接操作
 	int salary = 500 + 3500;
	String s = "Hello”+ “World";
2. “+”运算符两侧的操作数只要有一个是字符串(String)类型,系统就会自动将另一个操作数转换成字符串然后再进行连接
	int a = 10;
	System.out.println("a=" + a);
3.  在进行打印时,不管是什么类型,都自动转换成字符串进行打印。
	System.out.println(a);

八、三目条件运算符

1. 三目运算符,语法格式:
    x ? y  :z
2. 其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算符的结果为表达式y的值,否则整个运算结果为表达式z的值。

九、语句

1. 条件语句


if if..else if...else if if...else if...else if ...else switch 只有一句需要执行的语句时,可以省略{}



2. 循环语句

1. for 循环语句

1.1 for循环语句如下形式:
for (表达式1; 表达式2; 表达式3) { 语句;  _  ;  }

执行过程:

首先计算表达式1,接着执行表达式2,若表达式2的值为true,则执行语句,接着计算表达式3,判断表达式2的值,直到表达式2的值为false。


public class Test {   <span style="font-family: Arial, Helvetica, sans-serif;">//计算1-10的阶乘</span>

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		long result = 0;
		long f = 1;
		for (int i = 1; i <= 10; i++) {
			f = f * i;
			result += f;   
		}
		System.out.println("result="+result);
		
	}

}
1.2 while & do-while 语句


1.2.1 while语句的形式:while (表达式) { 语句;.....; }


while语句的执行过程:先判断表达式的值。若为true,则执行后面的语句,然后再次判断条件并反复执行,直到条件不成立。


1.2.2 do-while语句的形式:do {语句; ......; } while (表达式);


 do-while语句执行过程:先执行语句,再判断表达式的值,若为true,再执行语句,否则结束循环。


1.3 break & Continue 语句

 break语句用于终止某个语句块的执行,用在循环语句中,可以强行退出循环;


public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int stop = 4;
		for ( int i = 1; i <= 10; i++) {
			//当i等于stop时,退出循环
			if (i == stop) {
				break;
			}
			System.out.println("i = "+i);
		}
		
	}

}



输出的值为:



i = 1
i = 2
i = 3

 continue语句用于在循环体中,用在终止某次循环过程,跳过循环体中continue语句下面未执行的循环,开始下一次循环过程:


public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int stop = 4;
		for ( int i = 1; i <= 5; i++) {
			//当i等于stop时,退出循环
			if (i == stop) {
				continue;
			}
			System.out.println("i = "+i);
		}
		
	}

}



输出的值为:


i = 1
i = 2
i = 3
i = 5
1.4 switch语句


swich() {
    case xx:
    ............
    case xx:
    ............
    default:
    ............
}



为了防止case穿透,可以使用break语句,多个case可以合并到一块,java中的switch只能使用int类型值


十、方法

1. Java的方法:

Java的方法类似于其他语言的函数,都是为了实现某些特定的功能的代码片段。声明格式:
[修饰符1 修饰符2] 返回值类型 方法名(形式参数列表) {
	java语句:。。。。。。。。
}

2. 方法的参数和返回值类型


形式参数: 在方法被调用时用于接收外界输入的数据。 实参: 调用方法时实际传给方法的数据。 返回值:方法在执行完毕后实际返还给调用它的环境的数据。 返回值类型:实现约定的返回值的数据类型,如无返回值,则给出无返回值类型void


public class MethodTest {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		m();
		m2(2);
		m3(3, 4);
		int i = m4(4, 6);
		System.out.println(i);
	}
	public static void m() {
		System.out.println("Hello World");
		System.out.println("OK");
	}
	public static void m2(int i) {
		if (i > 3) {
			return;
		}
		System.out.println(i);
	}
	public static void m3(int i, int j) {
		System.out.println(i + j);
	}
	public static int m4(int i, int j) {
		return i > j ? i : j;
	}
}
输出的值为:


Hello World
OK
2
7
6

3. 方法的其他事项

Java语言中使用下述的调用方法:对象名.方法名(实参列表)
实参的数目、数据类型和次序必须和所调用的方法声明的形参列表匹配
return语句终止方法的运行并指定要返回的数据
Java中进行函数调用中传递参数时,遵循值传递的原则
基本类型传递的是该数据值的本身。引用类型传递的是对对象的引用,而不是对象本身。



十一、递归调用


定义:递归函数就是自调用函数,在函数体内部直接或者间接地自己调用自己,即函数的嵌套调用时函数本身。


例子1:递归函数的经典例子就时斐波那契数列。斐波那契数列的第一和第二项是1,后面每一项是前二项之和,即1,1,2,3,5,8,13....该例子可以采用自己递归调用的方法。
public class FibTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(fib(40));	//输出直接递归调用的值
	}
	public static int fib(int n) { //斐波那契数列方法
		if (n == 1|| n ==2) {
			return 1;
		}else {
			return (fib(n-1)+fib(n-2));	
		}
	}
}
例子2:使用递归调用来实现阶乘
public class Recursive {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("请输入一个整数:");
		Scanner sn = new Scanner(System.in);
		int n = sn.nextInt();	//输入一个整数
		int result = Recursive(n);
		System.out.println(result);
		
	}
		public static int Recursive(int n) {		//递归函数
			if (n <= 0) {
				return 1;
			}else {
				return(n * Recursive(n - 1));	
			}
			
		}

}



关于使用递归调用的利和弊:

1. 递归调用使程序易读,简化了程序设计的步骤,把本来冗长的阶乘实现只要几句代码就能实现。
2. 递归调用虽然简便,但是添加了系统的开销。每次运行,不仅对Cpu和栈内存都带来一定程度的占用的和消耗。