ASCII码表、类型转换、Random、Scanner、运算符、三目、选择控制
因为计算机内部只能识别01二进制数字,对于数字而言,可以直接转换为二进制,但是对于人类的文字而言如何转换为二进制的01呢?因为自己算最早出现在美国,所以美国就编写了一张码表,将人类的语言和符号和计算机中的01进行对应。
American Standard Code for Information Interchange,美国信息交换标准代码。
ASCII码表
当输入人类语的时候,操纵系统就会去查询对应的码表,将这些语言转换为对应的二进制,因为是美国人的语言只有英文,所以ASCII中只有英文和一些标点,每个英文字母和符号对应一个字节(8位)的二进制数字。
单个英文字母对应一个字节
不需要我们全部记忆,只需大家记住(0-9)对应(48-57),(A-Z)对应(65-90),(a-z)对应(97-122)。
因为不能识别中文,所以中国编写自己第一张简体中文编码表GB2312(简体中文,符号,日本假名),因为存的字有限,所以后来升级成为GBK(增加繁体中文和少数名族文字),我们的操作系统,如果设置成中文就是GBK编码。
因为后来出现了很多码表,所以世界标准组织ISO推出了Unicode编码表(万国码表),规定一个字符占用两个字节。
所有的编码表都支持ASCII编码表。
1、自动转换:范围小的可以向范围大的进行转换
byte <short < int < long < floa < double
2、强制转换:范围大的向小的进行转换,需要强制类型转换
小范围数据类型 标识符 = (小范围数据类型) 变量名称
int b = a;
//小范围的数向大范围的数转换的时候直接转换
//强制类型转换,大范围的数向小范围的数转换的时候
//强制类型转换的格式是
//小范围类型 标识符 = (小范围类型) 大范围的变量
byte c = (byte) b;
char转换成int,字符型和数值型进行转换的时候都会查询编码表,由于int 4个字节,char 2个字节,所以属于自动的类型转换。
int转换成char,需要强制类型转换。
如果char是汉字,转换成整数查询的就是Unicode编码表。
char类型的最大整数是65535,因为char没有负数。
char可以直接赋值为Unicode编码,格式为uxxxx,十六进制。
char a = 'a';
int b = a;
System.out.println(b); //97
int c = 97;
char d = (char)c;
System.out.println(d); //a
char chineseChar = 'u674e';
System.out.println(chineseChar); //李
4.1、算数运算符
算数运算符
加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串。
除法“/”当两边为整数时,取整数部分,舍余数。当其中一边为浮点型时,按正常规则相除。
“%”应用于奇偶判断和012012类似的数据结构,为整除取余符号,小数取余没有意义。结果符号与被取余符号相同。
整数做被除数,0不能做除数,否则报错。
++a和a++的区别。
// 参与运算的时候,如果是 a++,先赋值后运算,如果是++a,先运算,后赋值
int a=1;
int b = a++;
System.out.println("a:"+a+"---------"+"b:"+b); //a:2---------b:1
int d = ++a;
System.out.println("a:"+a+"---------"+"d:"+d); //a:3---------d:3
4.2、赋值运算符
赋值运算符
4.3、比较运算符
比较运算符
4.4、逻辑运算符
逻辑运算符
当使用短路与或者短路或时,只要能判断出结果则后边的部分就不再判断。
4.5、位运算符
位运算符
^运算规律
System.out.println( 1<5 # “success” : “fail” );
if控制语句
当括号内的内容是true的时候,执行{}中的内容
//并列if判断,无论上面的条件成立与否,下面的if都会进行判断
if(a < b){
System.out.println("a小于b");
}
if(a > b){
System.out.println("a大于b");
}
if(a == b){
System.out.println("a等于b");
}
if….else..控制语句
//上面条件成立下面就不在判断
if(a < b){
System.out.println("a小于b");
}else{
System.out.println("a不小于b");
}
if…else if…else控制语句
//上面条件成立下面就不在判断
if(a < b){
System.out.println("a小于b");
}else if(a > b) {
System.out.println("a大于b");
}else {
System.out.println("a等于b");
}
多条件判断
if(1<a&&a<5){
System.out.println("并且是&&,两个条件都为真");
}
if(a==1 || a==3){
System.out.println("或者是||,两个条件至少有一个为真");
}
if(a!=3 || a!= 4){
System.out.println("或者是||,两个条件至少有一个为真,!=表示不等于");
}
switch case语句
switch后边的表达式只能是整型字符型(byte,short,int,char),枚举类型,其中jdk7之后支持字符串型。
int day = 4;
switch (day) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
break;
}
//星期四
/*
* 获取当前年份月份的天数
* 1、获取当前月份,switch进行判断
* 2、获取当前的年份,使用if进行判断
* 3、(年份被4整除并且不能被100整除)或者年份能被400整除
* 4、输出29天
* 5、如果上述条件不成立,输出28天
*/
int month = 2;
int year = 2118;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println("31天");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println("30天");
break;
default:
if((year%4==0&&year%100!=0)||year%400==0){
System.out.println("29天");
}else{
System.out.println("28天");
}
break;
}
while循环和do–while循环
while循环的格式
当条件为真的时候执行循环体中的内容
Random ran = new Random();
int a = ran.nextInt(20)+1;
while(a > 12){
System.out.println(1111);
a = ran.nextInt(20)+1;
}
do–while循环
先执行do中的内容,然后进行条件判断,如果条件为true,执行循环体中的内容
在do中定义的变量只能在do中使用,不能在条件中和do–while外进行使用
int b = 0;
do {
b = 13;
System.out.println(11111);
}
while (b < 10){
System.out.println(22222);
};
for循环
for循环的格式
//先定义一个变量i,当i<10的时候执行循环内容,每执行一次
//在for中定义的i,只能在for中使用
for(int i = 0;i < 10; i++){
System.out.println("你好");
System.out.println(i);
}
for(int i = 0; i < 9; i++){
for(int j = 0; j < 10; j ++){
System.out.println(i+"----"+j);
}
}
break
break表示跳出当前循环,如果双层for循环写在外层跳出外层,写在内层跳出内层。
continue
continue表示跳出当前此次循环,下次循环继续,如果双层for循环写在外层跳出外层,写在内层跳出内层。