1. 标志符
2. 关键字
3. 常量和变量
4. Java基本数据类型
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); //-100
double d2 = 1e200;
float f2 = (float)d2;//会产生溢出
System.out.println(f2); //Infinity
float f3 = 1.23f;//必须加f
long l1 = 123;
long l2 = 30000000000L;//必须加l
float f = l1+l2+f3;//系统将转换为float型计算
long l = (long)f;//强制转换会舍去小数部分(不是四舍五入)
}
}
代码格式
(1) 大括号对齐
(2) 遇到{缩进tab、shift+tab
(3) 程序块之间加空行
(4) 并排语句之间加空格
(5) 运算符两侧加空格(有特定条件)
(6) {前有空格
(7) 成对编程(写{顺便写})
5. 运算符
6. 表达式和语句
7. 分支
8. 循环
9. 方法
10. 变量的作用域
所在的大括号范围内
11. 递归调用
/**
菲波那切数列-迭代方法
*/
public class Fab {
public static void main(String[] args) {
System.out.println(f(5));
}
public static long f(int index) {
if(index < 1) {
System.out.println("invalid parameter!");
return -1;
}
if(index == 1 || index == 2) {
return 1;
}
long f1 = 1L;
long f2 = 1L;
long f = 0;
for(int i=0; i<index-2; i++) {
f = f1 + f2;
f1 = f2;
f2 = f;
}
return f;
}
}
12. 总结
标记符
(起名)
关键字
(if、else、switch、for、while、do while、break、continue、void)
局部变量VS成员变量
(变量作用域、内存布局heap、stack、data segment、codesegment)
基础类型变量
(4类8种 转换规则)
分支、循环
(if、switch、for、while、do while)
方法
(形参、实参、返回值、返回值类型、递归调用[画图理解])
2.1 字符
1.什么是java的字符?
字符的关键字是char
字符串是String
2.常见字符集的几种方式,他们各有什么特点?
1、最早在dos下写pascal的时候,就遇到ASCII字符集,后来还是dos下写c,也是ascii字符集
特点:目前最通用的单字节编码字符集
表示:单字节
最早ascii用7bit表示,总共能表示2^7=128个字符,后来扩展到8bit,就表示2^8=256个字符
2、GB2312又称为GB2312-80字符集,全称为《信息交换用汉字编码字符集·基本集》,由原中国国家标准总局发布,1981年5月1日实施。
特点:当然是能表示99%的中国汉字,还包括拉丁字母、日文假名、希腊字母、俄文字母、汉语拼音符号、汉语注音字母等
表示:双字节
3、Unicode野心更大(当然有一个国际统一标准当然是好事)
特点:Unicode是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
表示:utf-8,utf-16,utf-32
这里可能有点不好理解,举个例子
首先,把unicode理解成对所有字符做了一个统一的编号,比如:“字”这个字符,编号是23383,这个是unicode定义的
但是,在计算机中,如何存储这个编号呢?方式就有很多,存储unicode的方式,就是utf-8,utf-16,utf-32
23383数值的16进制表示:0x5b57
utf-8用3个字节来表示汉字,所以utf-8的表示为:0xE5AD97
utf-16用2个字节来表示汉字,所以utf-16的表示为:0x5b57 刚好和数值是一样的
utf-32用4个字节来表示汉字,所以utf-32的表示为:0x00005b57 和数值是一样的,不过浪费空间
1.java标识符的是由什么组成方式?
标识符就是用于给 Java 程序中变量、类、方法等命名的符号。例:
2.使用标识符时,需要遵守几条规则:
1. 标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符,不能以数字开头。譬如:123name 就是不合法滴
2. 标识符不能是 Java 关键字和保留字( Java 预留的关键字,以后的升级版本中有可能作为关键字),但可以包含关键字和保留字。如:不可以使用 void 作为标识符,但是 Myvoid 可以
3. 标识符是严格区分大小写的。 所以涅,一定要分清楚 imooc 和 IMooc 是两个不同的标识符哦!
4. 标识符的命名最好能反映出其作用,做到见名知意。
Java 语言中有一些具有特殊用途的词被称为关键字。
Java 中常用关键字:
3.什么是关键字?
关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。
Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。
Java语言规定关键字不能作为标识符。目前共有50个Java关键字,其中,"const"和"goto"这两个关键字在Java语言中并没有具体含义。Java语言把它们列为关键字,只是因为"const"和"goto"是其他某些计算机语言的关键字。
2.2变量与常量
1.什么是变量?变量的语法是什么?
1、变量:
定义:值可改变的量
例如:
a,a1,name等都是合法的变量。
说明:
1)Java要求在使用一个变量之前要对变量的类型加以声明。
2)Java中一个变量的声明就是一条完整的Java语句,所以应该在结尾使用分号。
3)变量的命名规则:
变量必须以一个字母开头。
变量名是由一系列字母或数位的任意组合。
在Java中字母表示Unicode中相当于一个字母的任何字符。
数位也包含0-9以外的其他地位与一个数位相当的任何Unicode字符。
+、版权信息符号圈C和空格不能在变量名中使用。
变量名区分大小写。
变量名的长度基本上没有限制。
如想知道Java到目前位置认为哪些Unicode字符是字母的话,可以使用Character类中的isJavaIdentifierStart以及isJavaIdentifierPart方法进行检查。
变量名中不能使用Java的保留字。
4)可在一条语句中进行多个变量的声明,不同变量之间用逗号分隔。
2.如何声明变量和赋初值,有几种方式?
变量的值可以通过两种方法获得,一种是赋值,给一个变量赋值需要使用赋值语句。另外一种方法就是初始化,说是初始化,其实还是一个赋值语句,只不过这个赋值语句是在声明变量的时候就一起完成的。
例如:
int a =10; //这就是一个变量初始化的过程
下面两条语句的功能和上面一条的功能相同,只是这里将变量的声明和赋值分开来进行的。
int a;
a =10; //在赋值语句的结尾应该是用分号来结束。
说明:
1)在Java中绝对不能出现未初始化的变量,在使用一个变量前必须给变量赋值。
2)声明可以在代码内的任何一个位置出现,但在方法的任何代码块内只可对一个变量声明一次。
3.什么是常量,如何定义常量?语法是什么?定义时需要注意什么?
定义:值不变的量称为常量。
例如:
1,“hello”
说明:
1)在Java中使用final关键字来定义一个常数。
Final int a=10; //声明了一个整型常量a,它的值是10。
2)习惯上将常量的名字统统大写。
4.变量作用域是什么?根据作用域不同变量可以分成几种?
按照变量的作用域来分,变量可分为两种,即局部变量和全局变量.
局部变量也称为内部变量.局部变量是在函数内作定义说明的.其作用域仅限于函数内, 离开该函数后再使用这种变量是非法的.
全局变量也称为外部变量,它是在函数外部定义的变量. 它不属于哪一个函数,它属于一个源程序文件.其作用域是整个源程序.
2.3数据类型
1.Java有那些基本数据类型?各种基本数据类型的大小和取值范围是什么?
2.如何定义整型、浮点型、字符型和布尔型,每个的表示形式是什么?
整型 int 整数
浮点型有float和double两种类型,Java中默认为double类型,所以在声明float类型时,所赋的值后需加F或者f
float:long类型在内存占32位,表示范围为:1.4E-45~3.4028235E38double:double类型在内存占64位,表示数据范围为:4.9E-324~1.7976931348623157E308在给变量赋值时一定要注意变量的类型,不然可能会造成一些编译错误,或者精度缺失
字符型 char
字符型就是单个字符,用单引号引起来
一般有三种表示形式
1.单个字符:'A','B'
2.转义字符:'/n','/t'
3.unicode值:'/uxxxx'
布尔型 boolean
Java里表示真或假只用true或者false,不会像其他语言一样出现1表示真,0表示假的情况。
3.转义字符有那些?在程序中如何使用?
转移字符常用的就是以下几个:
\0 :字符串结束标志;
\n :换行(ascⅱ码为10);
\t :横向跳格;
\b :退格;
\r :回车(ascⅱ码为13);
\f :走纸换页;
\\ :字符\(ascⅱ码为92);
\' :单引号;
'\"':双引号;
\ddd:用8进制表示字符;
\xhh:用16进制表示字符
转义字符就是将一些字符转换成特殊的字符,因为在使用字符时会用到单引号或双引号,如果没有了转义字符这类常量,会导致系统在字符弄混,系统不能识别回车等符号,所以采用转义字符。
4.类型转换的方式有哪几种?每种方式如何转换?
1.自动类型转换
低级变量可以直接转换为高级变量,笔者称之为自动类型转换,例如,下面的语句可以在Java中直接通过:
byte b;int i=b;long l=b;float f=b;doubled=b;
如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例如
char c='c'; int i=c; System.out.println("output:"+i);
输出:output:99;
对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。
short i=99;char c=(char)i;System.out.println("output:"+c);
输出:output:c;
byte,short,int三种类型都是整型,因此如果操作整型数据时,最好统一使用int型。
2强制类型转换
将高级变量转换为低级变量时,情况会复杂一些,你可以使用强制类型转换。即你必须采用下面这种语句格式:
int i=99;byte b=(byte)i;charc=(char)i;float f=(float)i;
可以想象,这种转换肯定可能会导致溢出或精度的下降,因此并不推荐使用这种转换。
注意强制转换不同数据类型数据赋值后,被赋值的变量的数值(精度丢失).
2.4操作符
1.一元操作符有哪些?怎样使用?
2.++/--的使用 a++和++a的区别?
1. 一元减法操作符-
一元减法操作符返回的是其操作数的负值。操作数必须是一个数字基本类型,或者是一个数字基本类型的变量。
2. 一元加法操作符+
这个操作符返回的是其操作数的值。操作数必须是一个数字基本类型,或者是一个数字基本类型的变量。
3. 递增操作符++
这个操作符将其操作数的值递增一。它的操作数必须是数字基本类型的变量。这个操作符可以放在操作数之前或之后。如果操作符放在操作数之前,就称做前缀递增操作符。如果把它写在操作数之后,就变成了后缀递增操作符。
4. 递减操作符--
这个操作符是将其操作数的值递减一。它的操作数必须是一种数字基本类型的一个变量。和递增操作符一样,它也有前缀递减操作符和后缀递减操作符。
5. 逻辑求补操作符!
这个操作符只能应用于boolean基本类型,或者java.lang.Boolean的一个实例。如果操作数为false,那么这个操作符的值便为true,如果操作符为true,那么它的值便为false。
6. 按位求补操作符~
这个操作符的操作数必须是一个整数基本类型,或者是一个整数基本类型的变量。其结果是这个操作数的按位补数。
3.关系运算符:> < >= <= == !=,运算结果的数据类型是什么?
boolean
4. 逻辑运算符:&& || 他们是如何运算的?
1,逻辑运算符:
&& 逻辑与,可以理解为并且的意思.
|| 逻辑或,可以理解为或者的意思,也就是条件可以2取一
! 逻辑非 (一元表达式)
2,逻辑与运算:&&
逻辑与连接的2个表达式,要能够求解成bool类型,一般情况下都是关系表达式.
整个逻辑与运算结果也是bool类型
bool isRight=表达式1&&表达式2 :当表达式1、2全为true时,其表达式的结果为true.
综上所述,只有当2个表达式全为True时,其结果才能为True.
输出结果:Ture.
3,逻辑或运算:||
逻辑或连接的2个表达式,要能够求解成bool类型,一般情况下都是关系表达式.
整个逻辑或运算结果也是bool类型
bool isRight=表达式1||表达式2:当表达式1、2中有一个为true ,其表达式的结果为true.
综上所述,只要有1个表达式为True时,其结果都为True.
4,逻辑非运算(取反):!(这是一个一元运算符)
用法:
!(布尔类型的表达式)
作用:
如果布尔类型的表达式为True,加!后其整个式子的结果为False.
如果布尔类型的表达式为False,加!后其整个式子的结果为True.
5.三元运算符的语法(注意不同数据类型的变量比较时).
格式
•(条件表达式)?表达式1:表达式2;
•如果条件为true,运算后的结果是表达式1;
•如果条件为false,运算后的结果是表达式2;
示例:
•获取两个数中大数。
•int x=3,y=4,z;
•z = (x>y)?x:y;//z变量存储的就是两个数的大数
2.5流程控制
1.分支语句有哪几种?
如下两种
if switch
2. if有哪几种类型?每一种类型的执行流程是什么样的?
if判断
if…….else分支
if…….if嵌套
3. switch和if的区别,swith语句后面的控制表达式的数据类型有哪几种?
4种:byte short int char
4. switch程序的执行过程是什么样的?
先执行第一个case,直到遇到break结束
1.循环结构有哪几种?
如下三种
for whiledo…while
2.for循环语句的语法,写此循环时有什么需要注意的?他的执行流程是什么?
先是赋初值,再判断,执行语句,赋值再次判断,重复此过程
1.while循环语法,执行流程是什么?
先判断再循环
2.do-while循环语法,执行流程是什么?
先循环一次再判断
1. 转移语句有哪几种?每一种转移语句的用法?
break跳出
continue结束本次循环,继续下次循环。
return 返回结果
2.6一维数组
1.什么是数组,数组如何创建?
2.初始化数组的两种方式?
在JAVA中创建数组有两种方式
(1)静态创建 如String[]array = {"a", "b", "c"};
(2)动态创建 如String[]array = new String[] {"a", "b", "c"};或String[] array = new String[3];(先确认元素个数)
一般情况下习惯使用动态创建方式 比较灵活 可以先规定元素个数 后对每个元素进行赋值
1.foreach的用法.
foreach语句是java5的新特征之一,在遍历数组、集合方面,foreach为开发人员提供了极大的方便。
foreach 语法格式如下:
for(元素类型t 元素变量x : 遍历对象obj){
引用了x的java语句;
}
public static void foreachDisplay(int[]data){
System.out.println("使用 foreach 循环数组");
for (int a : data) {
System.out.print(a+ "");
}
}