/*
- 变量:就是将不确定的数据进行存储,也就是需要在内存中
- 开辟一个空间。
- 如何开辟内存空间呢?
- 就是通过明确数据类型,变量名称数据来完成
- 名称:变量名
- 空间的类型:数据类型,JAVA语言对不同的类型进行了定义 称为、
- 强语言
- JAVA语言是强类型语言,对于每一种数据都定义了明确的具体数据类型
- 在内存中分配了不同大小的内存空间
- 数据类型分为了:基本数据类型,引用数据类型
- 基本类型:数值型 字符型 布尔型
- 数值型:整数类型short int long
-
:浮点型 float double
- 引用数据类型:类class 接口interface 数组[]
- 整数默认int 小数默认 double
- byte 八个二进制位 -128-127
- short 十六个二进制位 -215-215-1
- int 三十二个二进制表示 -231-231
- float 单精度精确程度稍微小一点 32二进制位
- double 双精度精确程度比float精确一点 64位二进制
*char 字符型 0-65535 -
* 什么时候定义变量 * 当数据不确定的时候,需要对数据进行存储时 * 就定义一个变量来完成存储动作
*算术运算符
-
*/
public class day_02 {public static void main(String[] args)
{
/*
//定义变量的名字
//数据类型:变量名 = 初始值;
//定义一个int 类型的变量取值为4
int x = 4;
System.out.println(x);
x = 10; // 可以重复使用
System.out.println(x);
byte b = 2; // -128-127
// byte b1 = 128; 会提示你可能会丢失精度short s = 30000; long l = 4l; //通常后面用l标识一下 // float f = 2.3; 丢失精度 char ch = '4'; char cha = ' '; char cha1 = '+'; boolean bol = false; //布尔值 //类型转换 byte b1 = 3; b1=(byte)(b1+2); //强制类型转换 // 自动类型提升类型提升 System.out.println(b1); //char ch4 = 'a'; System.out.println('a'); System.out.println('a' +1 ); //类型提升97+1 System.out.println((char)('a'+1)); //字符'1'对应的是49 //数值1不一样 // 除法运算 int x = 4270; x = x/1000*1000; System.out.println(x); //4000 // 取模运算 System.out.println(10%4); // 2 // TODO Auto-generated method stub // ++ 自增 -- 自减 int y = 3,z; z = y++; System.out.println("x = "+x +" y = "+y); //++(--)在前 和++(--)在后 规则和c语言里面规矩一样 // + 字符串连接符号 System.out.println("asda"+"sa"); System.out.println("5+5"+(5+5)); //5+555 //转义字符 //通过反斜线 \ 来转变后面字母或者符号的含义 // \n : 换行 // \b : 退格 相当于 // \r : 按下回车键 // \t :制表符 TAB // 在windows中换行由 \r 或 \n 来换行 //双引号打印 "\"\"" 打印反斜线 \\ System.out.print("hello word"); System.out.println("hello Java"); char cj = '\n'; char c = '你'; //一个汉字是两个字节,一个char是两个字节,可以装得下中文 // print 与 println 区别在于 ln换行 // 赋值运算符 int x = 3; // += *= /= %= x += 4; //相当于x = x+4; // 以下的都是一样的格式 short s = 4; //s = s + 5; 错误 因为5为整形 s类型提升 数据存到两字节的里面存放不进去 //上面是两次运算,先做加法在做赋值,中间进行了类型提升 s+=5; //这个是经过一次运算,这个会做一个自动转换动作而上面的不自动进行自动转换 int c,d,e; c = d = e = 5; //比较运算符结果(true/false) //比较运算符等号 == 不能误写为 = System.out.println(1>2); //false */ //逻辑运算符 /* 运算符 运算 范列 结果 & and(与) false&true false | or(或) false | true true ^ XOR(异或) true^false true ! NOT(非) !true false && and(短路) false&&true false || OR(短路) false|true true */ //逻辑运算符用于连接boolean类型的表达式 // int x = 4;
// x>3 & x<6 = true & true = true;
// 真 & 真 为真
// 真与假为假
// 只要两边的boolean表达式结果,有一个为假,整个表达式就为假
// 只要两边都有true结果为
/*
true | true = true;
true | false = true;
false | true = true;
false | false = false;
|:两边只要有一个为true,结果为true
只要都有false结果为false.
/
/- ^异或 : 当真异或真的时候结果为假
- true ^ true = false;
- true ^ false = true;
- false ^ true = true;
- false ^ false = false;
- ^:两边相同结果为假
- 两边不同结果为真
- */
System.out.println(false^false); //false
int z = 4;
System.out.println(z<3 && z<6);
/*- & :无论左边是true是false,右边都运算
- && : 当左边为false的时,右边不运算
- | :两边都参与运算
- || :当左边为true,右边不运算
- */
//位运算
/*
*运算符 运算 范例- << 左移 3<<2=12 -->3*2^2=12
-
右移 3>>1=1 -->3/2^1=1
-
无符号右移 3>>1=1 -->3/2^1=1
- & 与运算 6 & 3 = 2
- ! 减运算 6 | 3 = 7
- ^ 异或运算 6 ^ 3 = 5
- ~ 反码 ~6 = -7
//左移动:其实就是乘以2的移动的位数次幂
//右移动:就是除以2的移动的位数次幂,最高位补什么由原有数据的最高为而定
//如果最高为为0 右移动后,就补0空位
//无符号右移动:无论最高位是什么,移动后 都用0补位
//与符号也可以作为位运算存在 真与假 假 真与真 真 假与真 假
//或符号,真或真 真 真或假 真 假或真 真 假或假 假
//异或运算,两边相同位假 两边不同为真 一个数异或同一个数两次,结果还是那个数
//异或用法大部分用于加密
System.out.println(6&3); //2
System.out.println(6^5); //3
//运算练习
//1.最有效的方式算出2乘以8等于几?
System.out.println(2<<3);
//2.对两个整数变量的值进行互换(不需要第三方变量)
int x=3,y = 8;
x = x + 8;
y = x - 8;
x = x - y;
System.out.println("x = " + x + " y = "+y);2.6 程序流程控制(指的就是JAVA中的语句) 1.判断结构 2.选择结构 3.循环结构 三种格式: 格式1. if(条件表达式){执行语句} 格式2. if(条件表达式){ 执行语句; }else { 执行语句; } 格式3.if(条件表达式;){ 执行语句1; }else if(条件表达式;){ 执行语句2; } ..... else{ 执行语句; } 判断结构的语法格式基本与c语言一致与三元运算符的区别 if else 结构 简写格式 :变量 = (条件表达式)?表达式1:表达式2; 三元运算符: 好处:可以简化if else 代码 弊端: 因为是一个运算符,所以算完必须要有一个结果。 // 三元运算符 int a=9,b; b = (a>1)?100:200; System.out.println(b); // 需求1:根据用户定义的数值不同。打印对应的星期英文 int num =8; if(num > 0 && num <8 ) { if(num == 1) System.out.println("1day"); else if(num == 2) System.out.println("2day"); else if(num == 3) System.out.println("3day"); else if(num == 4) System.out.println("4day"); else if(num == 5) System.out.println("5day"); else if(num == 6) System.out.println("6day"); else if(num == 7) System.out.println("7day"); }else { System.out.println("请输入正确的日期"); }
//需求2:根据用户所指定的月份,打印该月份所属的季节
//3,4,5 6,7,8 9,10,11 12,1,2int x = 4; if(x == 3 || x == 4 || x == 5) System.out.println(x+"春季"); else if(x == 6 || x == 7 || x == 8) System.out.println(x+"夏季"); else if(x == 9 || x == 10 || x == 11) System.out.println(x+"秋季"); else if(x == 12 || x == 1 || x == 2) System.out.println(x+"冬季"); else System.out.println(x+"月份不存在"); //方法二: int x=2; if(x > 12 || x < 1) System.out.println(x+"月份季节不存在"); else if(x>=3 && x<=5) System.out.println(x + "月份是春季节"); else if(x>=6 && x<=8) System.out.println(x + "月份是夏季节"); else if(x>=9 && x<=11) System.out.println(x + "月份是秋季节"); else System.out.println(x + "月份是东季节");
选择语句(switch语句)
格式:
switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
case 取值3:
执行语句;
break;
。
。
dafault;
执行语句;
break;
} 和c语言里面的类似1.switch:被选择类型只有4种 byte short int char 2.case之间与default没有顺序,先执行第一个case 没有被匹配的case执行default 3.结束switch语句的两种情况:遇到break,执行到switch语句结束 4.如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句 ,直到遇到break或则switch结尾结束。
//switch判断季节
int x = 4;
switch(x) {
case 3:
case 4:
case 5:
System.out.println(x + “春”);
break;
case 6:
case 7:
case 8:
System.out.println(x + “夏”);
break;
case 9:
case 10:
case 11:
System.out.println(x + “秋”);
break;
case 12:
case 1:
case 2:
System.out.println(x + “冬”);
break;
default:
System.out.println(“没有月份所在的季节”);
} //一般对值不多的情况才使用,相对于if语句更高效一些
//if 和 switch语句很像
//如果判断的具体数值不多,而是复合byte short int char这四种情况
//虽然两个语句都可以使用,建议使用switch语句 因为效率稍高
//其他情况:对区间的额判断,对结果位Boolean类型判断,使用if if的使用范围更广
//一、break
for(int x=0; x<3 ; x++) {
for(int y=0;y<4;y++) {
System.out.println(“x=”+x);
break; //break 只跳出当前循环 所以上面的输出语句执行了三次
}
}w:for(int x=0; x<3 ; x++) {
q:for(int y=0;y<4;y++) {
System.out.println(“x=”+x);
break w; //break 只跳出别名为q的循环,标号:给循环起名字的一种标志
}
}
/
/
//二、continue:只作用与循环结构,继续循环
for(int x =0 ; x<3 ; x++) {
continue; //下面的输出语句一句都不执行
System.out.println(“x=”+x);
// continue;
}for(int x=1; x<=10 ; x++) { if(x%2 ==1) continue; //一但遇到奇数就会跳出循环 System.out.println("x="+x); //输出全部偶数 } */ w:for(int x =0; x<=3 ; x++) { for(int y =0; y<4; y++) { System.out.println("x="+x); System.out.println("y="+y); //y一直等于0 continue w; //continue也可以跳出标号的循环 //注意:break和continue语句的作用的范围 //当break和continue单独存在时,下面可以又任何语句,因为都执行不到 } }
}
}