类型 | 占用存储空间 | 值域 |
---|---|---|
byte | 1字节 | -128~127 |
short | 2字节 | -2^15~2^15-1 |
int | 4字节 | -2^31~2^31-1 |
long | 8字节 | -2^63~2^63-1 |
float | 4字节 | -3.403E~3.403E38 |
double | 8字节 | -1.798E308~1.798E308 |
A:+的用法 a:加法 b:正号 c:字符串连接符 (对+进行了重载) B:/和%的区别 a: / 整数之间的相除,结果是整数。 向0取整 如果想得到小数,*1.0即可。 b: % 判断一个数是否是奇数 a % b = a - (a / b) *b 取余运算是一个很耗时的操作,在性能比较关键的时候最好不要使用 D:++和--的用法 a:他们的作用是自增或者自减 b:使用 **单独使用 放在操作数据的前面和后面效果一样。 a++或者++a效果一样。 **参与操作使用 放在操作数的前面:先自增或者自减,再参与操作 放在操作数的后面:先参与操作,再自增或者自减 c:底层原理: a = a++; int temp = a; a++; a = temp;
A:=叫做赋值运算符,也是最基本的赋值运算符 int x = 10; 把10赋值给int类型的变量x。 a = b = 10; 赋值运算符是从右向左结合的。 赋值表达式有值的,值等于=右边表达式的值。 B:扩展的赋值运算符的特点 隐含了自动强制转换。 面试题: short s = 1; //s = s + 1; short s = 1; s += 1; 请问上面的代码哪个有问题?
A:无论运算符两端简单还是复杂最终结果是boolean类型。 B:千万不要把==写成了=
A:逻辑运算符用于连接boolean类型的式子 B:结论 &: 有false则false |: 有true则true ^: 相同则false,不同则true。 情侣关系。 !: 非true则false,非false则true &&: 结论和&是一样的,只不过有短路效果。左边是false,右边不执行。 ||: 结论和|是一样的,只不过有短路效果。左边是true,右边不执行。 推荐使用 &&,||
A:结论: &:同时为1,才为1,否则为0 |:同时为0,才为0,否则为1 ^: 相同为0,不同为1; a ^ b = b ^a; a ^ 0 = a; a ^ a = 0; ~: ~0为1,~1为0; <<: 移除的高位丢弃,低位补0; 左移n个单位,相当于乘以 2 ^ n; >>: 移除的低位丢弃,如果符号位是0,则高位补0,如果符号位是1,则高位补1; 右移n个单位,相当于除以2 ^ n; >>>: 移除的低位丢弃,高位补0;
注意事项:如何移动的单位a超过了字长m, 则实际移动 a mod m (数学中的取余运算) B:面试题 a: 判断一个数是否是奇数 a & 1 == 1; b: 对2 ^ n 取余。 a & (2^n - 1); c: 如何判断一个数是否是2^n a & (a-1) == 0 d: 两个整数之间的交换; e: 有一堆数,都是成对出现的,只有一个单独的,找出这个单独的数 f: 用最有效率的方式求2 * 8的值 2 << 3;
A:格式 比较表达式 ? 表达式1 : 表达式2; B:执行流程: 首先计算比较表达式的值,看是true还是false。 如果是true,表达式1就是结果。 如果是false,表达式2就是结果。 C:案例: a:比较两个数据是否相等 b:获取两个数据中的最大值 c:获取三个数据中的最大值 int max = (a > b ? a : b) > c ? (a > b ? a : b) : c; int max = a > b ? (a > c ? a : c) : (b > c ? b : c);
创建某种类型的变量并用标识符为其命名,Java是一种强类型的语言,编译器会检查类型的一致性。所以在首次使用变量时一定要声明。如 int a,b;
如 c = 5,是将5这一int型常量赋值给变量c,赋值语句的左侧必须是单个变量,右侧可以是能够得到相应类型值的任意表达式。
根据制定的条件执行分支代码块之一,有if和swich两种语句结构
if(<boolean expression>)
{
<block statements1>
}else
{
<block statements2>
}
switch(<boolean expression>)
{
case value1:
<block statements1>
break; //可以结束switch语句
case value2:
<block statements2>
break;
…
default: //当所有情况都不匹配的时候,就执行该处的内容
<block statements>
break;
}
while(<boolean expression>)
{
<block statements>
}
循环语句中的代码段称为循环体。
以一种更紧凑的方式来表达while的循环
for(<initialize>; <boolean expression>; <increment>)
{
<block statements>
}
编译时将数组初始化。如int[] a = { 1, 1, 2, 5, 8};
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) { 方法体; return 返回值; }
修饰符:目前就用 public static。后面再详细讲解其他修饰符 返回值类型:就是功能结果的数据类型 方法名:就是起了一个名字,方便我们调用该方法。 参数类型:就是参数的数据类型 参数名:就是变量名 参数分类: 实参:调用方法时,传递的参数 形参:定义方式时,定义的参数。 方法体语句:就是完成功能的代码块 return:结束方法,并把计算结果返回给调用者。 返回值:就是功能的结果,由return带给调用者。
方法的参数按值传递:
方法名可以被重载:
方法只能返回一个值,但是可以包含多个返回语句:
方法可以产生副作用: