一、 数据类型
Java是强类型(strongly typed)语言,即每个变量和对象都必须具有声明类型,这样编译时就可以确定变量的类型,从而通过编译器避免许多错误。
Java数据类型分为简单类型和引用类型,如下图所示:
二、变量和常量
变量是Java程序中的基本存储单元,它的定义包括变量名、变量类型和作用域几个部分。一般约定变量名是以小写字母开头的,而类名是以大写字母开头。如果包含多个单词,且组合在一起,则每个单词的第一个字母大写。
例如:
public class VariableDemo {
public static void main(String[] args){
int ageOfStudent=5;//int 局部变量
double scoreOfStudent=80.0;//double 局部变量
char levelOfStudent='B';//char 局部变量
System.out.println("年级\t得分\t等级\t");
System.out.println(ageOfStudent+"\t\t"+scoreOfStudent+"\t"+levelOfStudent+"\t");
}
}
常量是在程序执行过程中值不变的量,Java常用关键字“final”来定义常量。
例如:final doublePI=3.1415926;
如果要改变已定义常量的值,就会导致一个编译错误。
三、装包和拆包
Java数据类型中的8中简单类型所对应的包装类如下所示。
自动装包:将简单类型包装成对应的包装类(装包对应的是自己的ValueOf)(在区间范围内,找到放进缓存中;反之,建立一个新对象)
装包转换把简单类型转换为引用类型后,可以方便地调用相应对象实现的方法。
自动拆包将包装类型转化成基本类型(拆包对应的是自己的intValue)
通过装包和拆包的操作机制可以实现简单类型和引用类型之间得转换。
四、各类数值型数据间的混合运算
自定类型转换
整型、实型、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转化由低级到高级。
其中,箭头左边表示参与运算的数据类型,op为运算符,右边表示转换成的进行运算的数据类型。
强制类型转换
高级数据要转换成低级数据,需要用到强制转换,如:
int i;
byte b = (byte) i;//把int型变量i强制转换为byte型
注意:这种使用可能会导致数据的溢出或精度的下降。
五、运算符与表达式
Java有四大类运算符:算术运算、关系运算、布尔逻辑运算和位运算。
算数运算符
功能用法与其他计算机语言中的一样,但需要注意的是:算术运算符的运算数必须是数字类型,算术运算符不能用在布尔类型上。
上表的运算大致可分为三种运算:
1、基本算术运算。
加、减、乘、除、模运算。
其中模运算较为特殊,它的运算结果是整数除法的余数,它能像整数类型一样被用于浮点类型。
例:10%3=1
2、算术赋值运算。
Java提供了一种特殊的算术赋值运算符,该运算符可用来将算术运算符与赋值结合起来。
例:a=a+4 就相当于 a+=4(其他的算术赋值符用法相同)
3、递增和递减运算符
递增运算符对其运算数加1,递减运算符对其运算数减1。
例:x++就相当于x=x+1
值得注意的是,当递增或者递减运算符作为一个较大的表达式的一部分,如果将它放在其运算数前面,Java就会在获得该运算数的值之前执行相应的操作,并将其用于表达式的其他部分。如果它放在其运算数后面,Java就会获得该操作的值再执行递增或递减运算。
例:
x=42;
y=++x;
输出y=43
x=42;
y=x++;
输出y=42
关系运算符
它决定值与值之间的关系,例如决定相等、不相等以及排列次序。
逻辑运算符
布尔逻辑运算符的运算数只能是布尔型,而且逻辑运算的结果也是布尔型。
例:A ? B : C ;(如果A为真,则B,否则C)
位运算符
Java定义的位运算直接对整数类型的位进行操作,这些整数类型包括long、int、short、char和byte。
值得注意的是左移和右移。
左移相当于乘法,右移相当于除法。
例:15<<2=60(把15左移两位,相当于15*2^2)右移恰好与它相反。
六、程序的基本结构
选择语句
如果条件为真,就执行if的对象(语句一),否则,执行else的对象(语句二),任何条件下两个语句都不可能同时进行执行。
循环语句
求1-100之内的和,1-100之内奇数的和,1-100 偶数的和
用三种循环语句解答
public static void sumNWhile(int num) {
int sum = 0;
int sumOdd = 0;
int sumEve = 0;
int i = 1;
while (i <= num){
sum += i;
i ++;
}
System.out.println("sum :"+ sum);
i=1;
while (i <= num-1){
sumOdd += i;
i += 2;
}
System.out.println("sumOdd :"+ sumOdd);
i=2;
while (i <= num-2){
sumEve += i;
i += 2;
}
System.out.println("sumEve :"+ sumEve);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
sumNWhile(num);
}
public static void sumNDo(int num){
int i = 1;
int sum = 0;
int sumOdd = 0;
int sumEve = 0;
do {
sum += i;
i += 1;
}while(i <= num);
i = 1;
do {
sumOdd += i;
i += 2;
}while(i <= num);
i = 2;
do {
sumEve += i;
i += 2;
}while(i <= num);
System.out.println("sum :"+ sum);
System.out.println("sumOdd :"+ sumOdd);
System.out.println("sumEve :"+ sumEve);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
//mutilTable(num);
sumNDo(num);
}
public static void fun1(int num) {
int sum = 0;
int sumOdd = 0;
int sunEve = 0;
for (int i = 1; i <= num ; i++) {
sum += i;
}
System.out.println("sum :"+ sum);
for (int i = 1; i <= num; i += 2) {
sumOdd += i;
}
System.out.println("sumOdd :"+ sumOdd);
for (int i = 2; i <= num ; i += 2) {
sunEve += i;
}
System.out.println("sunEve :"+ sunEve);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
fun1(num);
}
转向控制语句
break语句一般用在switch语句中,用来终止一个语句的序列,或者再循环结构中,用来退出同一层的循环。使用break语句可以直接强行退出循环,忽略循环体的其他语句和循环的条件测试。在循环中遇到break语句时,循环被终止,程序控制在循环后面的语句重新开始。
public class Break {
public static void main(String[] args) {
for(int i = 0 ;i < 100 ; i ++){
if( i == 10)break;//当i等于10,跳出循环
System.out.println("i:"+i);
}
System.out.println("Loop complete");
}
}
continue语句使控制直接转移给控制循环的条件表达式,然后继续循环过程。
public class Break {
public static void main(String[] args) {
for(int i = 0 ;i < 10 ; i ++){
System.out.println(i+" ");
if (i % 2 == 0)
continue;
System.out.println(" ");
}
}
}//在for循环中,循环的反复表达式被求值,然后执行条件表达式,循环继续执行。
return语句用来使程序控制返回到调用它的方法处
public class Break {
public static void main(String[] args) {
boolean t = true;
System.out.println("Before the return.");
if (t)
return;
System.out.println("This won't execute.");
}
}
上例子中,由于Java运行系统调用main(),因此,return语句使程序执行返回到Java运行系统。
(欢迎评论订正修改)