?Java变量:
?java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
?java程序中每一个变量都属于特定的数据类型,使用前必须声明:
eg:
int i=100;
float f=12.4f;
double d=0.12;
String s="helloWord";
?从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此,每一个变量使用前必须要先申请(声明),然后必须进行赋值,才能使用。
Java变量分类:
?按被声明的位置划分:
?局部变量:方法或语句块内部定义的变量【方法体内部声明的变量(包括形参)成为局部变量】
?成员变量:方法外部、类的内部定义的变量 【在方法体外,类体内声明的变量成为成员变量】
?注意:类外面(与类对应的大括号外面)不能有变量的声明
public class test { int j = 9;// 成员变量 //方法的参数是局部变量 eg:args public static void main(String[] args) {// 方法体 int i = 100;// 局部变量 } }
?按所属的数据类型划分:
?基本数据类型变量
?引用数据类型变量
boolean 逻辑运算符 只有true和false两个值
public class test { public static void main(String[] args) { boolean flag=true; if(flag){ //do something } } }
基本数据类型转换:
?Boolean类型不可以转换为其他数据类型,其他数据类型也不能转换为Boolean类型
?容量小的类型自动转换为容量大的数据类型,数据类型按容量大小排序为
byte,short,char—>int—>long—>float—>double
byte,short,char之间不会相互转换,他们三者计算时首先转换为int类型
?容量大的数据类型转换为容量数据小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要注意
?有多种类型的数据混合运算时,系统首先自动的讲所有数据转换成容量大的数据类型,然后再进行计算。public class test {
public static void main(String[] args) {// 方法体 int a=123; int b=456; double d=(a+b)*1.6;//系统会自动转换为double类型 float f=(float)((a+b)*1.6);//需要加强制转换 float的数据容量比double大 byte b1=67; byte b2=90; byte b3=(byte)(b1+b2);//系统将转换为int型运算,需要强制转换符 System.out.println(b3);//打印结果为:-99 原因:byte表数范围是-128~127 float f3 = 1.23f;//必须加f long l1 = 123; long l2 = 30000000000L;//必须加l float f4 = l1+l2+f3;//系统将转换为float型计算 long l = (long)f;//强制转换会舍去小数部分(不是四舍五入) System.out.println(f4); System.out.println(l);
} }
自加自减运算符:
?++(--) 在前时先运算再取值
在后时先取值再运算
public class test { public static void main(String[] args) { int i1 = 10; int i2 = 20; int i = (i2++); System.out.print("i="+i); System.out.println("i2="+i2); i = (++i2); System.out.print("i="+i); System.out.println("i2="+i2); i = (--i1); System.out.print("i="+i); System.out.println("i1="+i1); i = (i1--); System.out.print("i="+i); System.out.println("i1="+i1); } }
打印结果:
i=20 i2=21 i=22 i2=22 i=9 i1=9 i=9 i1=8
逻辑运算符:
public class test { public static void main(String[] args) { boolean a,b,c; a = true; b = false; c = a & b; System.out.println(c);//false c = a | b; System.out.println(c);//true c = a ^ b; System.out.println(c);//true c = !a; System.out.println(c);//false c = a && b; System.out.println(c);//false c = a || b; System.out.println(c);//true } }
public class test { public static void main(String[] args) { int i = 1,j = 2; //第二个操作不再计算 boolean flag1 = (i<3)&&((i+j)>5); boolean flag2 = (i<3)&&((i+j)<5); boolean flag3 = (i==1)&&((i+j)<5); System.out.println(flag1);//false System.out.println(flag2);//true System.out.println(flag3);//true //第二个操作不再计算 boolean flag4 = (i<2)||((i+j)<6); boolean flag5 = (i>2)||((i+j)<6); boolean flag6 = (i<2)||((i+j)<6); System.out.println(flag1);//false System.out.println(flag2);//true System.out.println(flag3);//true } }
switch语句:
public class test { public static void main(String[] args) { int score = 69; if(score>100||score<0){ System.out.println("输入成绩有误"); }else{ switch(score/10){ case 10: System.out.println("极好"); break; case 9: System.out.println("特棒"); break; case 8: System.out.println("优秀"); break; case 7: System.out.println("良好"); break; case 6: System.out.println("及格"); break; case 5: case 4: case 3: case 2: case 1: System.out.println("不及格"); break; default: System.out.println("error"); } } } }
递归调用:
public class test { public static void main(String[] args) { System.out.println(method(3)); } public static int method(int n){ if(n == 1){ return 1; }else{ return n*method(n-1); } } }
程序执行过程:
stack:栈 存放局部变量
heap:堆 动态申请内存用的 new出来的东西