ASCII码表、类型转换、Random、Scanner、运算符、三目、选择控制
一、ASCII码表因为计算机内部只能识别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;
三、int和char类型数据转换 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); ?//97int c = 97;char d = (char)c;System.out.println(d); ?//achar 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:1int d = ++a;System.out.println("a:"+a+"---------"+"d:"+d); ????//a:3---------d:3
4.2、赋值运算符
???赋值运算符
4.3、比较运算符
???比较运算符
4.4、逻辑运算符
???逻辑运算符
当使用短路与或者短路或时,只要能判断出结果则后边的部分就不再判断。
4.5、位运算符
???位运算符
^运算规律
??1^0=1,0^0=0,任何数和0相异或得到的是这个数本身。 ?0^1=1,1^1=0,任何数和1相异或得到的是这个数的相反。 ?一个数自己和自己异或得到的是0。 ?五、三目算符 ??必须有结果,?后必须跟有东西 ?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;}//星期四
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;}
七、Scanner类 - ?属于引用类型,创建的时候需要固定格式 数据类型 变量名 = new 数据类型(); ?需要导入所在的包,导包格式: importjava.util.Scanner; ?创建对象 Scanner sc = new Scanner(System.in); ?获取输入的整数 int a = sc.nextInt(); ?获取输入的字符串 String str = sc.nextLine(); ?注意sc.nextInt()和sc.nextLine()会中断程序。
- ?需要导入所在的包,导包格式: importjava.util.Random; ?创建对象 Random ran = new Random(); ?获取随机整数范围是[0,50): int a =ran.nextInt(50); ?获取随机小数范围是[0,1): double b =ran.nextDouble(); ?如何获取一个[a,b]的随机数 int a =rand.nextInt(b – a + 1) + a;
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循环写在外层跳出外层,写在内层跳出内层。