一、标识符
二、关键字
三、JAVA基础数据类型
java常量
java变量
从本质上来讲,变量其实是内存里面的一小块区域,一个程序在运行的时候,实际上这个程序是位于内存里面,然后才开始运行。一个.exe文件存放在硬盘上是无法运行的,在硬盘上看到的.exe文件无非就是一个文件而已,当我们双击这个.exe文件时,运行起来的时候实际上是整个.exe文件被放在了在内存里面,然后操作系统找到main方法,也就是程序的入口,然后就开始执行了。执行的过程之中,会不断地在内存里面分配一些区域,变量在内存里面就是一小块区域,变量有两个概念,一个是变量的名字,另一个是变量的值,即这一小块区域是有名字的,里面装着一个值,因此以后要想访问这小块区域里面的内容就可以根据这小块区域的名字来访问了。因此,变量的本质就是一小块内存区域。就变量来说,该在内存里面分配多大的存储空间呢?不同的变量类型分配不同大小的存储空间,每一个变量都是属于特定的数据类型的,声明成不同的数据类型,它就在内存里面分配不同的存储空间。
变量作用域:变量的作用域只在“{ }”有效,出了这个“{ }”就没有作用了
java变量的分类
java局部变量与成员变量
java数据类型划分
四、JAVA数据类型详解
布尔型 boolean
字符型 char
全球的文字放到计算机里面表示全是0和1,Unicode是统一了全世界国家文字的一种编码方式,用这样的编码可以把全世界国家的文字连接在一起。Unicode编码又分为两种,一种是Utf-8,另一种是Utf-16。JAVA所采用的是Utf-16,每一个字符占2个字节,任何国家的文字放到Unicode里面都是占2个字节。
整数类型
浮点类型
基本数据类型转换
类型转换测试
public class TestConvert {
public static void main(String arg[]) {
int i1 = 123;
int i2 = 456;
double d1 = (i1+i2)*1.2;//系统将转换为double型运算
float f1 = (float)((i1+i2)*1.2);//需要加强制转换符
byte b1 = 67;
byte b2 = 89;
byte b3 = (byte)(b1+b2);//系统将转换为int型运算,需要强制转换符
System.out.println(b3);
double d2 = 1e200;
float f2 = (float)d2;//会产生溢出
System.out.println(f2);
float f3 = 1.23f;//必须加f
long l1 = 123;
long l2 = 30000000000L;//必须加l
float f = l1+l2+f3;//系统将转换为float型计算
long l = (long)f;//强制转换会舍去小数部分(不是四舍五入)
}
}
五、运算符
算术运算符(自加和自减运算符)
逻辑运算符
赋值运算符
字符串连接符
表达式
三目运算符
六、语句
条件语句
if语句
分支语句(switch语句)
1、switch支持的数据类型【切记不支持long、double、float及其包装类型】
- 基本数据类型:char,byte, short, int
- 包装数据类型: Character,Byte,Short,Integer
- 枚举类型:Enum
- 字符串类型:String(Jdk 7+ 开始支持)
2、switch注意事项
- case 里面必须跟 break,不然程序会一个个 case 执行下去,直到最后一个 break 的 case 或者 default 出现。
- case 条件里面只能是常量或者字面常量,而且不能为null,否则编译报错。
- default 语句可有可无,最多只能有一个。
- 建议在switch语句前判断参数是否为null:switch的参数不能为null,否则会报空指针异常【null的类型不确定】
循环语句
for循环语句
while循环和do while循环
break和continue语句
七、方法
方法执行到return语句后,这个方法的执行就结束了,方法可以有返回值,但可以不用这个返回值。方法首先要定义,然后才能调用。
八、变量的作用域
变量的作用域只在自己所属的“{ }”有效,出了这个“{ }”就没有作用了
九、递归调用
递归:在一个方法内部对自身的调用就称为递归。
范例:
/*计算第5个斐波那契数列数*/
/*
斐波那契数列特点:f(1)=1,f(2)=1,f(3)=f(1)+f(2),f(4)=(f2)+(f3)……依次类推。
即后一个数都是等于前两个数的和,这样的数列就是斐波那契数列。
*/
/*
使用递归调用的方法计算
*/
public class Fab{
public static void main(String args[]){
System.out.println(f(5));
}
public static int f(int n){
if(n==1||n==2){
return 1;
}else{
return f(n-1)+f(n-2);
}
}
}
整个在内存中执行过程如下图所示:
十、程序的执行过程