类型转换:自动转换和强制转换 1.自动转换 ,范围从小到大 2.强制转换,范围从大到小,可能会发生数据溢出 * 比较而言,自动转换是Java自动执行的,而强制转换需要我们手动执行。 数据类型有两大类:基本类型和引用类型。 范围从小到大:byte->short->char->int->long->float->double ASCII码表: Unicode码表:万国码,开头0~127部分和ASCII码表完全一样,但是从128开始包含有更多字符。 ********** * 48-0 * * 65-A * * 97-a * ********** ******************************** //水仙花 int num = 371; //获取百位数: int b = num/100; //获取十位数: int s = num%100/10; 或者 int s = num/10%10 //获取个位数: int g = num%10; int sum = b*b*b+s*s*s+g*g*g; System.out.println(sum); ************************************* 运算符包括:1. 算数运算符; 2. 赋值运算符; 3. 比较运算符; 4. 逻辑运算符; 5. 三元运算符。 一、算数运算符:(+ 加法运算/字符串连接运算)、(- 减法运算)、(* 乘法运算)、(/ 除法运算)、(% 取模,取余数)、(++ 自增运算)、(-- 自减运算) * 任何数据类型和字符串进行连接的时候,结果都会变成字符串。”a”+”b”结果是ab * 只有变量能使用自增自减运算符。 * 不同类型数据进行运算,得到的结果会是范围大的类型 * 整数使用以上运算符计算,无论怎样都不会得到小数 二、赋值运算符: 1. 赋值运算符;(将右侧的数据交给左侧的变量) 就是一个等号“=”,一个等号是赋值,两个连着的等号“==”是相等。 2. 复合赋值运算符: += a+=3 相当于 a = a + 3; -= b-=4 相当于 b = b + 4; *= c*=5 相当于 c = c + 5; /= d/=6 相当于 d = d + 6; %= e%=7 相当于 e = e%7; * 复合赋值运算符会进行一个隐含的强制类型转换 * 只有变量才能使用赋值运算符,常量不能进行赋值。 三、比较运算符 * 比较运算符是两个数据间的比较,运算结果都是布尔值true或false。 * 如果进行多次判断,不能连着写 四、逻辑运算符 * 逻辑运算符是用来连接两个布尔类型结果的运算符,运算结果都是布尔值true或false。 (短路与) 与 && , 全都是true,才是true,否则就是false; 左边是false,右边就不执行了 (短路或) 或 || , 至少有一个是true,就是true,否则就是false; 左边是true,右边就不执行了 非 ! , 取反, 本来是true,现在是false;本来是false,现在是true * 一元运算符:只需要一个数据就可以进行操作的运算符 * 二元运算符: 需要两个数据才可以进行操作的运算符 * 三元运算符:需要三个数据才可以进行操作的运算符 格式:数据类型 变量名称 = 条件判断 ?表达式A: 表达式B 必须同时保证表达式A和表达式B都符合左侧数据类型的要求 三元运算符的结果必须被使用 # 方法: * 定义的格式:public static void 方法名称(参数类型 参数名){ 方法体 } 方法体:大括号当中可以包含任意条语句。 注意事项:1.方法定义的顺序无所谓 2.方法的定义不能产生嵌套包含关系 3.方法必须被调用才能执行 * 调用: 在main方法中调用 方法名称(参数名); # 编译器的优化 对于byte/short/char三种类型来说,如果右侧数据没有超过范围,那么javac编译器将会自动隐含的补上一个(byte)(short)的强制转换 常量优化:右边赋值的数据都是常量,且不超过数据类型的范围。 题目:有n个人围成一圈,顺序排位,从第一个人开始报数(从1~3报数),凡报到3的人退出圈子,最后留下的人是原来第几号的那位。 思路:从键盘录入一个数字,作为开始的人数,用到Scanner报到3的人退出圈子,所以要定义一个布尔型数组判断某人是否还在圈内,
boolean[] isIn = new boolean[n];同时还需定义报数计数器Number和圈里的人数的计数器Countter。 |