第一节课
byte类型
128 // -128
129 // -127
就是说储存的byte类型,如果走到最大值,会从头走回来再走一圈。
128比较特殊
浮点型怎么算:
为什么是long --float
java语言中一个字符,占有两个字节,所以char可以表示一个汉字。而其他语言中的有的占用一个字节,就不可以了,所以就不一定了。
运算符
正确叫法
整数相除只能得到整数
%是得到除法运算的 余数
/是得到除法运算的 商
字符串与谁+,最后得到的都是字符串类型;
为了让结果在同一行,输出时用 + 连接输出结果。不论结果是字符还是整数。
第二节课:++和–用法
作用:
示例;
为变量自增自减1,变量可以,常量不可以使用++ /–。
单独使用没有经过运算时,++x与x++输出的结果是一样的。
结果是:
写在++前面是,先把自身加1然后在赋值给另一个变量,写在后面是先赋值后自增减1.
就是说++在后时,参与运算时它所用的值是原来值。
重点
第五节;算法运算符
加法的三种用法:
7
4
a
98
helloa1
98hello
第六节;赋值运算符
示例:
结果 :30
其他的依次类推理解。
第七节;赋值运算符的面试题
+=想当与隐含的强制类型转换
如:
第八节;比较运算符
==,!=,<=,>=
特点:无论你的操作是简单还是复杂,结果是boolean,就是只有 true \false
boolean flag = (a b );这句话的意思是说把ab的结果复制给变量名为flag的布尔类型。
这是个错误的演示:
boolean flag =(a == b ); 就是把b赋值给a,然后再把a给flag,但是a是int型,所以无法给boolean,所以无法识别。
本章代码:
第九节;逻辑运算符
逻辑运算符两边必须都是布尔类型boolean。例如不能写成 3<x<5,只能写成x>3&x<5.
代码
逻辑运算符,有false结果则为false。
|逻辑与,只要有true 就为 true。
逻辑异或
相同为false 不同为true。
举例:情侣关系:男男 ,女女. false
男女 , 女男 true
逻辑非
偶数个!,J结果不改变,
第十节;&&和&运算符
开发中常用的是:|| ,&& ,!
因为当能够得到结果是,就不在接着判断了,减少运算量。
左边是false后右边就不执行了。
int x,y;
x=3 .y= 4;
x++ == 3 为真 。因为x++ 是先运算,及先比较3==3 ,在自加1.
y++ == 4 为真
++x == 3 为假
++x == 3 & y++ == 4 为假
例如:
最后一个,输出结果为:4 4 false 因为&& 当第一个为false后,就不在往下运行了,所以y++相当于没有执行。
第三个 , 输出结果为:4 5 false
第十一节;位运算
& , | ,^ , ~ 也叫位运算。
当& 两端是数据时,是做位运算。当时boolean是逻辑运算。
几种运算符的算法:
都是转为2进制用补码来算,正数的原反补 一样,然后再算。
& 有0 就为 0
| 有1 就为 1
^ 相同为 0 ,不同为1
~计算:
负数的反码: 符号位不变,其他的 0 变1 ,1变0。
补码是反码加1
第十二节;位异或运算
某一个值被一个数据异或两次,该数的本身不变。
可以用于简单的加密,发给一个异或的值,然后告诉你用谁异或的,然后你再异或回来
第十三节;面试位异或运算
让两个数据交换位置用,开发中用的是引一个“换位置”的方法,来实现。
但是面试时要用异或来解答,可能换位置的方法太简单了。
a=a^b
b=a^b //先不要把a算出来,代入理解,此时 =右边相当于a被异或两次,所以a不变,复制后相当于把a给了b。
a=b^a // 同上
左边aba 右边a^b
异或可以用来做数据交换:
方式三
方式四
第十四节;面试位异或运算
<< 左移 :左边最高位丢弃,右边补齐 0。
右移 :最高位是0,左边补齐0;最高位是1 ,左边补齐 1.
无符号右移 无论最高位是0或者是1,左边补齐0.
十进制的左移是乘以 10 的次方。所以2进制的左移是乘以2的次方
3<< 2 结果为:3x22=12.
同理右移为 除以 2的次方
此时的24>>>2 也是 6.因为24 为正数。
负数的右移。
与 >>> 的区别
首先算出补码,然后运算,然后在退出原码
计算的是-24
面试题:
请用最有效的方式写出计算2乘以8的结果?
2*8是可以的,但是要用左移的方法来回答。2 << 3 。2左移3位,相当于 2^3。
正数的原反补都一样所以 原码也是 00111111 11111111 11111111 11101000
第十五节;三目运算符
获取两个数中的较大值
三目运算符的表达式:比较表达式?表达式1:表达式2;
ture输出表达式1,false输出表达式2
int x =1, int y =2;
int z = ( x > y ) ? x : y ;
System.out.printl(“z:”+z);
输出结果为:z:2 分析:首先为false 所以表达式2 (这里是y)。y=2 。所以是把y赋值给z。
容易错误点:
如果写成 int z = ((x=y) ? x:y ); 就会报错,因为x=y 最后是int类型。所以,而要求必须是boolean所以好会报错。
找出三个数中的最大值
int temp = ()
补充: int max2 = a> b?a>c?a:b>c?b:c 这种写法不推荐。
如果 a>b为true则执行(判断 a>c ? 如果为true)则输出a。如果为false则执行后面的判断b>c是否对,如果false输出c.如果true输出b。
帮助理解的分析(可以不看)
判端三个谁最大,这样两步就可以搞定了。只要找出大的,就行。不用管谁是第二大,所以二步就可以,而排序则不行,如果是排序则必须找出第二大,所以两步不行。
判断两个值相等吗?
没必要写boolean flag = ( mn ) ? true :false;因为 mn 本身就是一个布尔类型。
第十七节;键盘录入的基本格式讲解
为了让程序更灵活
导包是jdk中的文件,没有为什么
import java.util.Scanner 放在class前。
创建键盘录入数据对象 Scanner sc = new Scanner (system.in); 自己理解,可以看做是sc不断扫描 键盘输入,然后赋值给sc 。
int x = sc.nextInt(); 通过sc这个对象,调用nextInt()这个方法。 因为有(),所以是方法。加()的是方法,不加的是对象 。
int x = sc.nextInt(); 表示接收数据
过程在图中:
输入两个数求和
判断输入两个数的较大值
键盘录入三个判断谁大
判断两个数中的那个大
第二十节 语句基础:
理解:看看:
顺序结构,从上到下
选择结构:if switch
第一种
注意事项
1.
if 后边的结果肯定是boolean型
if 的省了也不会报错,建议永远不要省略;
if 语句后的if{},如果你忘记写其实也是可以执行的,但是它就只能控制后面的一句内容,而不能控制多句。如下:
本来是不输出任何一句,但是实际结果是;over:
加了个; 就认为是结束了。
结果是:b的值是100
over
一般来说有左大括号就没有分号,有分号就没有左大括号。
第23节:if的第二种用法
用法的格式
注意点:
1.else后没有表达式;
找出键盘录入的最大值:
定义一个max来获取较大值。
注意:判断一个数据是奇数还是偶数,然后输出它是奇数还是偶数。
if(x%2 ==0 )这句话我没想到
第二十五节 三元与if的区别
string 是字符串类型的; int 是整数型
三元与if第二种用法的区别:
如果是赋值两个一样
如果是if后是输出语句时就不一样了(如图中的就是直接输出 100是奇数)因为三元运算符是一个运算符,而运算符操作完毕后就应该有一个结果,而不是输出语句。
可以用三元实现都可以用if改,但是if 不一定都可以用三元改。
第二十六节 if的第三种用法
用法表示式
就是依次往下执行,如果1不满足就执行2 ,2不满足就执行3 。如果有一个满足了,就不在执行下面的了。
注意点,可以用多个,但是只要不是最后一个就要用else if 而不是else,只有最后一个才是else
score 成绩:分数
if 的第三种用法实例;
这样写满足了基本要求,但是别人可能输入的数据不是你想额那样。一本题为例就是说,人家输入一个200分或者-199分,怎么办。所以要加个如果不符合输出,你的输入不符合要求
做软件要考虑
要考虑正确数据,错误数据,边界数据。
本题改进如下:
第二十七节 练习题
y=2x+2, 在程序中不能这样写,要写成 y=2*x+2
题目:
过程:
第二十八 练习题
题目;
答案:
这一种太长了
int month=sc.
改进
改进2
判断三个数的最大值:
if (a>b){
if (a>c){
max=a;
}
else{
max=b;
}
}
这可以双重套用if语句。if条件语句的语句体部分也可以是个语句。