变量
变量的概念:
内存中的一个存储区域
该区域有自己的名称(变量名)和类型(数据类型)
Java中每个变量必须先声明,后使用
该区域的数据可以在同一类型范围内不断变化
使用变量注意:
变量的作用域:一对{ }之间有效
初始化值
定义变量的格式:
数据类型 变量名 = 初始化值
变量是通过使用变量名来访问这块区域的
变量类型:
byte 1字节(8bit)
short 2字节
int 4字节
long 8字节
float 4字节
double 8字节
boolean
java的整数型常默认为int类型,申明long型常量必须后加'l'或者'L',小数默认的是double,申明float时,后面要加'f'
小练习:
关于计算的练习
1 public class CalcTest { 2 3 public static void main(String[] args) { 4 byte b1 = 100; 5 short s1 = 200; 6 b1 = (byte)(b1 + s1); // 任意整数相加, 整数的四个字节中的前三个直接丢弃 7 // 都会自动转型为int型作运算,结果值也是int型 8 System.out.println("b1 : " + b1); 9 float f1 = 2.3f; // 不可以, 浮点数的字面量默认是double数据类型 10 double d1 = 2.3; 11 //float f2 = d1;// 不能直接赋值, 必须强制类型转换 12 float f2 = (float)d1; 13 f2 = b1 - s1 + f1 ; // 程序自动把所参与运算的数据升级为float 14 // 下面的这个赋值也不能成功!! 因为是double赋值于float 15 //f2 = b1 - s1 + f1 + d1 ; // 程序自动把所参与运算的数据升级为double 16 f2 = (float)(b1 - s1 + f1 + d1) ; // 程序自动把所参与运算的数据升级为double 17 18 int num = (int)2999999999L; 19 System.out.println(num); 20 System.out.println('a'+1+"Hello!"); 21 22 23 24 } 25 26 }
小运算
1 public class Exer { 2 3 /* 4 字符串简单介绍后练习: 5 1 写一个Variable类, 6 main方法中使用double类型声明var1和var2变量, 7 然后用var2保存var1与var2之商。 8 2 声明字符串变量str, 9 用str串接的形式表示上述计算过程并打印输出结果。 10 var1 = 300 var2 = 400 11 300 / 400 = 0.7 12 */ 13 public static void main(String[] args) { 14 double var1 = 100; 15 double var2 = 200; 16 String str = "来个字符串" + var1 + '/' + var2 + '='; // 抓住时机,趁var2还未改变之前串接在字符串中 17 var2 = var1 / var2; // 再进行运行,把结果保存在var2中 18 str = str + var2; // 再把结果串接在字符串中. 19 System.out.println(str); 20 21 String str2 = "2342"; 22 int num = Integer.parseInt(str2); 23 System.out.println(num); 24 } 25 26 }
字符串的拼接
1 public class ComSetTest { 2 3 public static void main(String[] args) { 4 int n = 10; 5 System.out.println("n:" + n); 6 n += 20; //复合赋值运算 // n: 30 7 // 等效于 8 // n = n + 20; 9 System.out.println("n:" + n); 10 n /= 10; 11 // 等效于 12 // n = n / 10; n:3 13 System.out.println("n:" + n); 14 15 n %= 2; 16 // 等效于 n = n % 2; 17 System.out.println("n:" + n); 18 19 short s = 10; 20 //s = s + 2; //这个语句会导致编译错误,因为右面的值运算出来后是int类型的 21 s += 2; 22 23 int i = 1; 24 //i = i * 0.1; 25 i *= 0.1; 26 System.out.println(i);// 27 i++; 28 System.out.println(i);// 29 } 30 31 }
位运算
1 public class Exer2 { 2 3 /* 4 练习 5 int var1 = 0x56; // 需要注意的是, 整数是4个字节,共32个比特位 6 int var2 = 0xF2; 7 对两个数进行按位取反 8 int var3 = ~var1; 9 int var4 = ~var2; 10 再按位与,或,异或的结果打印输出*/ 11 public static void main(String[] args) { 12 int var1 = 0x56; 13 // 0000 0000 0000 0000 0000 0000 0101 0110 取反 14 // 1111 1111 1111 1111 1111 1111 1010 1001 (-87的补码) 15 int var3 = ~var1; 16 System.out.println("~0000 0000 0000 0000 0000 0000 0101 0110 : " + var3); 17 int var2 = 0xF2; 18 // 0000 0000 0000 0000 0000 0000 1111 0010 取反 19 // 1111 1111 1111 1111 1111 1111 0000 1101 20 int var4 = ~var2; 21 System.out.println("~var : " + var4); 22 // 0000 0000 0000 0000 0000 0000 0101 0110 & 23 // 0000 0000 0000 0000 0000 0000 1111 0010 = 24 // 0000 0000 0000 0000 0000 0000 0101 0010 -> 0x52 -> 82 25 int var5 = var1 & var2; 26 System.out.println("var1 & var2 = " + var5); 27 // 0000 0000 0000 0000 0000 0000 0101 0110 | 28 // 0000 0000 0000 0000 0000 0000 1111 0010 = 29 // 0000 0000 0000 0000 0000 0000 1111 0110 -> 0xF6 -> 15*16+6 = 246 30 int var6 = var1 | var2; 31 System.out.println("var1 | var2 = " + var6); 32 33 // 0000 0000 0000 0000 0000 0000 0101 0110 ^ 34 // 0000 0000 0000 0000 0000 0000 1111 0010 = 35 // 0000 0000 0000 0000 0000 0000 1010 0100 -> 0xA4 -> 164; 36 int var7 = var1 ^ var2; 37 System.out.println("var1 ^ var2 = " + var7); 38 } 39 40 41 }
短路运算
1 public class LogicTest { 2 3 public static void main(String[] args) { 4 boolean a = true; 5 boolean b = true; 6 System.out.println("a && b : " + (a && b)); // true 7 System.out.println("a || b : " + (a || b)); // true 8 System.out.println("!a : " + !a); // false 9 10 System.out.println("----------------------------------"); 11 a = true; 12 b = false; 13 System.out.println("a && b : " + (a && b));// false 14 System.out.println("a || b : " + (a || b));// true 15 System.out.println("!a : " + !a); // false 16 17 System.out.println("----------------------------------"); 18 a = false; 19 b = true; 20 System.out.println("a && b : " + (a && b));// false 21 System.out.println("a || b : " + (a || b));// true 22 System.out.println("!a : " + !a); // true 23 24 System.out.println("----------------------------------"); 25 a = false; 26 b = false; 27 System.out.println("a && b : " + (a && b));// false 28 System.out.println("a || b : " + (a || b));// false 29 System.out.println("!a : " + !a); // true 30 31 } 32 33 }
简单的if流程
1 public class IfTest { 2 /* 3 从命令行参数接收小明的期末成绩。 4 当成绩为100分时,奖励一辆BMW; 5 当成绩为(80,99]时,奖励一个台iphone5s; 6 当成绩为[60,80]时,奖励一本参考书; 7 其它时,什么奖励也没有。*/ 8 public static void main(String[] args) { 9 10 int score = Integer.parseInt(args[0]); 11 if (score == 100) { 12 System.out.println("66666,给你一个BMW。。。"); 13 } else if (score > 80 && score <= 99) { 14 System.out.println("还不错,给你一台iphone5s。。。"); 15 } else if (score >= 60 && score <= 80) { 16 System.out.println("马马虎虎,给你一本书回家多看看。。。"); 17 } else if (score >= 0 && score <= 60) { 18 System.out.println("我擦,不及格,好好玩。。。"); 19 } else { 20 System.out.println("大哥,输错了吧。。。"); 21 } 22 //System.out.println("所接受的命令行参数是:" + score); 23 } 24 25 }
变量的注意事项:
1.变量必须有类型
2.变量必须有名称
3.变量必须先声明后使用
4.变量的范围是它所属的一个大括号(一个结构)
5.变量在相同的范围内不可以重复定义
变量的分类:
1.按照变量的类型
1.基本数据类型的变量
byte,short,int,long,float,double,char,boolean
byte < short<
int < long < float < double
char <
2.引用类型的变量
类型 引用变量;
String str = "我是一个字符串";
一个字符串可以和任意类型的数值进行拼接,产生一个新的字符串
2.按照变量声明所在的位置
1.局部变量 在方法中申明的变量
2.成员变量(对象属性)或者叫实例变量
算数运算符
+ - * / :支持任意两个或多个数值型数据或char类型
%: A % B, 只能支持整数型和char类型
&&:短路与 前面条件为假时,后面不进行判断
三目运算
变量 = 布尔表达式?表式1:表式2;