Java语言基础
一、基本数据类型
数据类型规定一类数据占用内存空间的长度(字节数)、取值范围、以及对该类数据所能进行的操作。
1、整型
使用关键字 byte、short、int、long 来定义,一共四种整型数据。
Java规定,在程序中使用的所有整型数据值默认都为 int 型。要表示 long 型时必须在整数数值后面明确地加英文字母 L 或 l 。例如:
long i=100L;
2、浮点型
使用关键字 float、double来定义,一共两种整型数据。
Java规定,在程序中使用的所有浮点型数据值默认都为 double 型。要表示 float 型时必须在整数数值后面明确地加英文字母 F 或 f ,例如:
float i=2.5F;
3、逻辑型
Java比C语言多增加了逻辑型,用于存储逻辑值,也称布尔型。逻辑型值只有两个;真(true)和假(false)。Java使用关键字boolean来定义逻辑型的变量或常量。
与C语言不同的是,在Java中,所有的流程控制语句例如 if、for、while 等语句中的条件表达式的取值都必须为逻辑型。例如:
boolean x=true;
4、字符型
使用关键字 char 来定义,表示一个Unicode字符(占两个字节)。与C语言相同,Java的字符型值用成对的英文单引号 ’ ’ 扩起来表示,并且严格区分大小写。例如:
char x='A';
5、字符串
Java通过 String 类直接支持字符串。字符串用成对的英文双引号 " " 扩起来表示。例如:
String x="Hello";
二、 运算符和表达式
1、运算符
Java的运算符分为算术运算符、关系运算符、逻辑运算符、位运算符。
算术运算符:
用于算术运算,其运算结果是一个数值。它包括一元运算符和二元运算符,一元运算符:只有一个操作数,正(+)、负(-)、加1(++)、减1(–)。二元运算符:运算符位于两个操作数之间。加(+)、减(-)、乘(*)、除(/)、取余(%)。
关系运算符:
用于比较两个数值之间的大小,其运算结果是一个逻辑型值。Java有六个关系运算符:等于(==)、不等于(!=)、大于(>)、大于等于(>=)、小于(<)、小于等于(<=)。
逻辑运算符:
用于逻辑运算,要求运算双方均为逻辑型值,其运算结果是一个逻辑型值。Java有六个逻辑运算符:逻辑与(&&)、逻辑或(||)、逻辑非(!)、逻辑异或(^)、逻辑与(&)、逻辑或(|)。要说明的是,两种逻辑与(&&和&)的运算规则基本相同,两种逻辑或(||和|)的运算规则也基本相同,但&和|的运算要把逻辑表达式全部计算完,而&&和||运算具有短路运算功能,其运算效率高于&和|的运算。
位运算符:
用于以二进制为单位进行运算,其操作数和整型运算结果是一个逻辑型值。Java有七个位运算符:位与(&)、位或(|)、位非(~)、位异或(^)、右移(>>)、左移(<<)、0填充右移(>>>)。
例如:
package yb;
public class test1 //类名
{
//java application程序主入口函数,带命令行参数
public static void main(String args[])
{
//Java的算术运算例
int i=6, j, k, m, n;
j=+i; //i值为6,j值为6
k=-i; //i值为6,k值为-6
m=i++; //i(值为6)赋值给m后再自加1,最后i值为7,m值为6
m=++i; //i(值为7)先自加1后再赋值给m,最后i值为8,m值为8
n=j--; //j(值为6)赋值给n后再自减1,最后j值为5,n值为6
n=--j; //j(值为5)先自减1后再赋值给n,最后j值为4,n值为4
i=8%3; //i值为8÷3的余数,即i值为2
System.out.println("j="+j+" "+"k="+k+" "+"m="+m+" "+"n="+n+" "+"i="+i);
//Java的关系运算例
Boolean x, y, z ;
x=(8>1); //8大于1,x值为 true
y=(8>=8); //8等于8,y值为 true
z=(6!=5); //6不等于5,z值为 true
z=(6<5); //6大于5,z值为 false
System.out.println("x值为"+x+" "+"y值为"+y+" "+"z值为"+z);
//Java的逻辑运算例
Boolean A=true,B=false,C;
C=A&&B;//A与B做逻辑与,C值为 false
System.out.println("C值为"+C);
C=A||B;//A与B做逻辑或,C值为 true
System.out.println("C值为"+C);
C=!A;//A做逻辑非,C值为 false
System.out.println("C值为"+C);
C=A^B;//A与B做逻辑异或,C值为 true
System.out.println("C值为"+C);
C=A&B;//A与B做逻辑与,C值为 false
System.out.println("C值为"+C);
C=A|B;//A与B做逻辑或,C值为 true
System.out.println("C值为"+C);
//Java的位运算例
int a,b,c;
//按位与运算
a=64; //x的二进制补码表示为 00000000 00000000 00000000 01000000
b=70; //y的二进制补码表示为 00000000 00000000 00000000 01000110
c=a&b;//z的二进制补码表示为 00000000 00000000 00000000 01000000 即十进制64
System.out.println(a+"&"+b+"="+c);
//正数的右移运算
a=70; //x的二进制补码表示为 00000000 00000000 00000000 01000110
b=2;
c=a>>b; //z的二进制补码表示为 00000000 00000000 00000000 00010001 即十进制 17
System.out.println(a+">>"+b+"="+c);
//负数的右移运算
//负整数的补码等于负整数的原码的反码加1(最高位永远置1表示负号)
a=-70; //x的二进制原码表示为 10000000 00000000 00000000 01000110
//x的二进制反码表示为 11111111 11111111 11111111 10111001
//x的二进制补码表示为 11111111 11111111 11111111 10111010
b=2;
c=a>>b; //z的二进制补码表示为 11111111 11111111 11111111 11101110
//z的二进制原码表示为 10000000 00000000 00000000 00010010 即十进制 -18
System.out.println(a+">>"+b+"="+c);
}
}
2、表达式
通过运算符把运算对象连接起来,并符合Java语法规则的式子在Java语言中称为表达式。根据不同的运算,可以分为算术表达式、关系表达式、逻辑表达式、位表达式等。
运算规则是:多个括号嵌套的,内层括号中的表达式先运算;在同一级括号中,优先级高的先运算;同一优先级的运算符,按运算符的结合性次序进行运算。
三、流程控制语句
1、分支语句
if语句:
if语句实现两路分支,可以选择带有else语言的if语句,也可以用{}实现if语句的嵌套。
例如:
int a=3,b=1,max;
if(a<b)max=b;
else max=a;
switch语句:
switch语句与case语句、default语句一起实现多分支。在case语句中如果不带break语句,则执行完当前的case语句后将继续执行下一条case语句,直到遇到break语句或switch语句结束为止。如果遇到break语句,则立即停止执行下一条case语句,并且switch语句执行完毕。
例如:
String my_out="";int week=5;
switch(week)
{
case 1: my_out="星期一"; break;
case 2: my_out="星期二"; break;
case 3: my_out="星期三"; break;
case 4: my_out="星期四"; break;
case 5: my_out="星期五"; break;
case 6: my_out="星期六"; break;
case 7:
case 0: my_out="星期日"; break;
default : my_out="输入错误!";
}
2、循环语句
for语句:
for语句的语法形式是:
for(表达式1;表达式2;表达式3)
循环体;
例如:
int i,n=10,sum=0;
for(i=1;i<=10;i++) sum+=i;//求1到10的累加和
System.out.println("1到10的累加和是:"+sum);
while语句:
while语句的语法形式是:
while(逻辑表达式)
循环体;
例如:
int m=48,n=32,r=0;
while(r!=0) //循环条件判断
{
m=n;n=r;r=m%n; //循环变量修改
}
do-while语句:
do-while语句的语法形式是:
do{循环体} while(逻辑表达式);
3、其他语句
break语句:
break语句用于跳出break语句所在的当前循环体并终止当前的循环语句,break语句也用于终止switch语句。
例如:
for(k=1;k<=6;k++) //循环
{
System.out.println(" k="+k);
if(k==2)break; //终止循环
}
continue语句:
continue语句用于短路当前循环,即不再执行continue语句后面的循环体部分,并重新判断是否继续进行下一次循环。
例如:
for(j=1;j<=6;j++)
{
if(j>=3) continue;
System.out.println(" j="+j);
}
四、数组的使用
数组是连续内存单元中一组名字和数据类型相同的数据元素的有限集合。数组中每个单位的数据称为一个数组元素。数组必须先定义,然后分配内存,最后才能使用。
1、一维数组
一维数组的定义方式有多种:
数据类型 数组名[]; //定义数组
数据类型[] 数组名;
数组名=new 数据类型[长度]; //分配内存
//定义数组并分配内存
数据类型 数组名[]=new 数据类型[长度];
数据类型[] 数组名=new 数据类型[长度];
数据类型 数组名[]={元素0的初值,元素1的初值,......,元素n的初值};//定义数组,分配内存,并对数组中的各元素附初值
例如:
int a[]={30,81,37,45,26,46,44,78,80,64};
2、二维数组
当一维数组中每个元素都是一个一维数组时,则构成了Java的二维数组。
二维数组变量定义的语法形式为:
数据类型 数组名[][]; //定义二维数组
数据类型[] 数组名[];
数组名=new 数据类型[第一维长度][第二维长度]; //分配内存
//定义数组并分配内存
数据类型 数组名[][]=new 数据类型[第一维长度][第二维长度];
//定义数组,分配内存,并对数组中的各元素附初值
数据类型 数组名[][]={{第一维的各个元素值1,元素值2,......,元素值n},
{第二维的各个元素值1,元素值2,......,元素值m},
......,
{第x维的各个元素值1,元素值2,......,元素值y}};
例如:
final int N=9;
int a[][]=new int[N][]; //定义二维数组,并指定第一维有9个元素