2.java语法
2.1java的变量
.java中的标识符的要求:
1,只能是字母,数字,_,$
2,数字不能作为标识符的开头。
3,大小写敏感。
4,没有长度限制。如:arrayoutofboudleexception
5,标识符不能是关键字。
一般来说,类的名字以大写字母开头。
方法和变量的名字以小写字母开头。
标识符的名字应当具有含义,如age, name
表达式:1,由运算符和变量组成。2,都会有返回值。
简单表达式:a/b;复合表达式:"a/b="+(a/b);
.对于任意一个变量只要定义都需要三部分的内容
变量的类型 变量名称 = 变量的值 (变量的值必须和类型一致)
.变量的类型
基本数据类型:4类8种
1、整型-->byte(1) short(2) int(4) long(8) -->int(默认类型)
定义long long num = 12l;
2、浮点类型--> float(4) double(8) --->double(默认类型)
定义float float f = 12.0f;
3、布尔类型(boolean)--> true false
4、字符类型(char)--->字符类型不是字符串使用的是' '(单引号)进行定义,而且只能有一个字符
char c = 'a'; char cc = 'cc';//错误,只能有一个字符。unicode(2个字节)
·变量的类型转换()
1、小类型的值会自动转换为大类型的值 int a = 10 double b = 12.5 a+b-->double类型
2、要把一个大类型的值存储到小类型中,需要进行强制类型转换,如果不转换,会编译出错
强制类型转换的方式:(int)12.5--->就把12.5这个double类型转换为int类型了
3、当char、byte和short进行运算时会自动转换为int类型
byte b1 = 12; byte b2 = 32; b1+b2--->是int类型
·变量的作用域
花括号内有效,在同一个作用域中不能重复定义变量
·定义变量的规定
第一:关键字用来定义变量(_sdfhj_sd)int double = 10;
第二:对于类而言,定义的名称的第一个字母用大写,对于函数或普通的变量而言,
第一个字小写 之后遵循驼峰标识。
思考:
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
short s1 = 1; s1 = s1 + 1; (s1+1 运算结果是int 型,需要强制转换类型)
short s1 = 1; s1 +=1;(可以正确编译)
·引用类型变量(string)
string 类提供了数值不可改变的字符串 string s=new string(“abc”);创建了两个对象
1,在字符串池中创建一个对象(此对象是不能重复的)
2,new出一个对象。java运行环境有一个字符串池,由string类维护。
执行语句string s="abc"时,首先查看字符串池中是否存在字符串"abc",如果存 在则直接将"abc"赋给s,如果不存在则先在字符串池中新建一个字符串"abc",然后再将
其赋给s。执行语句 string s=new string("abc")时,不管字符串池中存
在字符串"abc",直接新建一字符串"abc"
(注意:新建的字符串"abc"不是在字符串池中),然后将其付给s。
2,初始化 (局部变量而言,必须初始化才能使用)如:age=10;
3,通过变量的名字对变量进行操作,如:age=other;
赋值时,左=右
1)数据性质是否一样。
2)所占用的内存空间上考虑(左>右)不用类型转换。(左<右)要类型强制转换,
如:int age=1;
longl=10;
age=(int)l;
符号位:0代表正数,1代表负数。
string 和stringbuffer 的区别
java 平台提供了两个类:string 和stringbuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个string 类提供了数值不可改变的字符串。而这个stringbuffer 类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用stringbuffer。典型地,你可以使用stringbuffers来动态构造字符数据。
2.2java运算符
2.2.1、+、-、*、/、%(算术运算符)
2.2.2、逻辑运算符(>、<、>=、<=、==、!=)12>11-->true
2.2.3、自增和自减
注意:
自增(++),自减(--)运算符。
前++:++a;先对a+1,再返回a+1之后的值。
后++:a++;先返回a的值,然后对a进行+1。
前++,后++共同的特点:a本身的值都会+1;
区别在于表达式的返回值是不一样;用返回值来参与计算
2.4三目运算符
? :-->(boolean express)? a : b;如:char ch=(5>2)?'y':'n';
?前面的布尔表达式如果为真就执行a,否则执行b。
(‘:‘左右两侧的返回类型要一致,且与ch的返回类型也一样)
2.3语句结构
1,顺序
2,条件(代码是否执行,依赖于一个特定的条件)
if(boolean express){
xxxxxx;//如果布尔表达式为真就执行xxxxxx。
xxxxxx;
}else{
xxxxxx;//如果布尔表达式为假就执行xxxxxx。
}
3,循环(相同的代码,被重复的执行多次)
a,初始化循环条件。b,确定循环条件。c,确定循环变量在循环体中的变化。
(1)a;
while(boolean express){
xxxxxxxxx;//如果布尔表达式为真就执行xxxxxx
xxxxxxxxx;
c;
}
(2)for(a;b;c){
}
(3)do{
xxxxxxxxxx;//循环体至少执行一次;
xxxxxxxxxx;
}while(boolean express);
while(xxx){
xxxxxx;
bread;//或者continue;
break :用在循环或分支里,用于退出整个循环或分支
continue :用在循环里,用于结束本次循环。接着开始下一次循环
4,分支
switch(var){
case 1 : xxxxxx;
break;
case 2 : xxxxxx;
........
default : xxxxxxx;//default后面可以不用break;
}
注意:
var:是一个整数表达式。因此传递给 switch 和 case 语句的参数应该
是int、short、char 或者byte。long,string 都不能作用于swtich。
2.4函数
函数所做的事情,可以将一个过程进行封装,将来只要调用函数就会调用整个过程
函数的基本要素
返回值 函数名(函数参数){
函数体;
}
函数(方法):是由一些相关代码组成的集合,目的是为了解决一个特定的问题,或者实现
某个特定的功能。
函数(方法)一定有一个自己的名字,通过函数的名字执行函数中的代码。
2,在java中如何定义函数:
a,声明:public static void printmenu(int a,double b){.....}
b,编写函数体:
如: public static void printmenu(int a,double b){
xxxxxxxxxxx;
}
函数(方法)里面不允许再有其它的函数(方法),函数(方法)的位置必须 是并列的。
3,调用函数:
通过函数名,如pirntmenu(a,b);
public static void main(string argv[]){
xxxxxxxxxxxx;
printmenu(a,b);
xxxxxxxx;
调用者-原数据->函数
return 作用:1,结束本方法。2,返回结果。
一个函数返回的值只能有一个。
值传递。传递的是实参的值,
被调函数使用的数都是实参的拷贝。
是否改变实参,要看被调函数的设计。
2.5数组
一,数组:一维数组-->:三种声明方式
(1)首先要声明。如:int[] array;
(2)申请内存空间如:array=new int[2];
array代表数组array[]的首地址(引用:引用类似c++里的指针。);当参数传递时,只
要用数组的首地址就可以。
1,数组中的元素类型要一致。
2,数组长度不能缺省,不能改变,但可以删了重建。
3,内存空间连续,有索引下标值(从0开始,最大length-1)
优缺点:查询快,增删慢(链表,查询慢,增删快)
只要有new在,就要为变量分配内存。 array.length//表示数组array的长度。
array存的是array数组首变量的地址。
二,数组的显示初始化:int[] array={1,2,3,4,5,6};
三,int[] array=new int[]{1,2,3,4,5,6,7};
数组的拷贝:
public static int[] expand(int[] a){
int[] b=new int[a.length*2];
/* for(int i=0;i<a.length;i++){
b[i]=a[i];
这段代码等于下面那条代码
*/
// 从a数组下标为0的位置开始拷贝,到b数组下标为0 的位置开始粘贴。
// a.length为粘贴的个数。(一般为a数组的长度)。
system.arraycopy(a,0,b,0,a.length);
return b;//返回扩展后的数组b。b是代表数组b的首地址。
}
二维数组(数组的数组)-->:三种声明方
二维数组的第二个[]在声明时可以留空,如:int[][] array=new int[4][];
//留空说明该二维数组的列是以行的数组下标为数组名,再成为新的数组。
一,声明:int[][] array=new int[3][4];//声明一个三行四列的整型二维数组。
二,int[][] array={{1,2,3},{2,3,4},{2,5,7},{2,3,6}};
三,int[][] array=new int[][]{{1,2,3},{2,3,4},{2,5,7},{2,3,6}};
1,找对象(客观存在的事物);
2,利用对象的功能。就是让对象干点什么;
3,对象的属性可以是其他对象。
4,对象还可以通过调用其他对象的函数产生联系。
5,简单的对象构成复杂的系统。
有什么:属性-------》 实例变量
做什么:方法-------》函数
对象的属性可以是其他对象
对象还可以通过调用其他对象的函数产生联系
简单的对象构成复杂的系统
思想:解决问题的过程,
总纲(优势)
1,符合人的思维过程。
2,编写出来的代码比较合理。如:可扩展性,可维护性,可读性等等。(存在就是合理),(贴 近生活)
3,弱耦合性,
4,可扩展性
5,可复用性。不要重复制造轮子。
6,更尽所能,更施其职。