day02-语言基础(2)
来源:互联网 发布:淘宝吉他艾吉特哪家好 编辑:程序博客网 时间:2024/05/22 13:29
JAVASE 语言基础(2)
2.5.3比较运算符
注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。
注2:比较运算符“==”不能误写成“=” 。
————————————————————————————————————————————————————
2.5.4逻辑运算符
逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。
“&”和“&&”的区别:
&时,左边无论真假,右边都进行运算;
&&时,如果左边为真,右边参与运算;如果左边为假,那么右边不参与运算。有短路效果。
“|”和“||”的区别:
|时,左边无论真假,右边都进行运算;
||时,如果左边为真,右边不参与运算(有短路效果);如果左边为假,右边参与运算。
异或( ^ )与或( | )的不同之处是:
当左右都为true时, 结果为false。
——————————————————————————————————————————————————
2.5.5位运算符
- 位运算是直接对二进制进行运算。
————————————————————————————————————————————————————
————————————————————————————————————————————————————————
-左移:
System.out.println(3<<2); //左移2位 3*2(2)=12
总结:左移几位就是乘上2几次方,空位用0补
————————————————————————————————————————————————————————
- 右移:
右移原理和左移相似
总结:右移几位就是除上2的几次幂运算,空位是什么就用什么补。
System.out.println(6>>1);//右移1位
————————————————————————————————————————————————————————
- 负数右移:
正数和负数在Java中是以补码的形式存在的:
正数的补码:正数的补码与其原码相同。
负数的补码:就是对正数的原码进行:最高位为1(符号位),其余各位取反,最后在加1所得。
System.out.println(-6>>1);//右移1位
————————————————————————————————————————————————————
逻辑运算符和位运算符例子:
“|“ or (或)
“||” or (或)有短路效果
“&” and (与)
“&&” and (与)有短路效果
异或 ^
相同为0,不同为1;
相同为false,不同为true
当异或两侧是整形常量时,是用其对应的二进制书按位进行异或的
~ 反码 按位取反
public class OperateDemo {
public static void main(String[] args)
{
int x=3;
/*
||或运算符特点:
左边为真时,右边不参与运算。有短路效果
左边为假时,右边参与运算。
*/
System.out.println(x>6||x<5);// false|| true->true
/*
&&与运算符特点:
左边为真时,右边参与运算。
左边为假时,右边参与运算。有短路效果
*/
System.out.println(x>2&&x<5);//true&&true -->true
System.out.println((x>2)^(x<5));//true^true --false
System.out.println((x<2)^(x>5));//false^false --false
/*
异或在位运算的使用
2:二进制:0 0 1 0
5:二进制:0 1 0 1
------------------
0 1 1 1---》十进制的7
*/
System.out.println(2^3);//7
/*
~ 反码
下面例子中反码
1111-1111 1111-1111 1111-1111 1111-1001
是一个负数(符号位是1)计算机存储负数时用补码来存储的,第一位是符号位,负数的补码是取反加1
6:二进制 0000-0000 0000-0000 0000-0000 0000-0110
反码 1111-1111 1111-1111 1111-1111 1111-1001
1000-0000 0000-0000 0000-0000 0000-0110
+ 1
---------------------------------------------
1000-0000 0000-0000 0000-0000 0000-0111 是-7 符号加2 有效位111
*/
System.out.println(~6);
System.out.println(-7);//与(~6)相等
}
}
——————————————————————————————————————————————————————
题1:最有效率的方式算出2乘以8等于几?
答: 2<<3;
题2:两个整形变量互换数值,在不用第三个变量的情况下。
int a=2,b=5;
int m=8,n=3;
/*
不建议使用,当两个变量的数值很大时,会出现超过表数范围,而int型会强制自动转换,造成数据精度丢失。
*/
a=a+b; //a=2+5=7
b=a-b; //b=(2+5)-5=2
a=a-b; //a=(2+5)-2=5
/*
异或运算中,当一个数同两次结果还是这本身如 a^b^b=a a^b^b=aa^b^b=a a^b^b=a 。
a1=a1^b1 :1000^0011 ->0100
b1=a1^b1 :0100^0011 ->1000
a1=a1^b1 :0100^1000 ->0011
*/
a1=a1^b1;
b1=a1^b1;//(a1^b1)^b1=a1
a1=a1^b1;
System.out.println("方法一:a="+a+",b="+b);
System.out.println("方法二:a1="+a1+",b="+b);
—————————————————————————————————————————————————————
2.5.6三元运算符
- 格式: (条件表达式)?表达式1:表达式2
条件表达式为true时,取表达式1的值,
条件表达式为true时,取表达式1的值。 - 示例;
取两数的最大值?
int x=3,y=5,z;
z = (x>y)?x:y //变量存储的就是两个数的大数。
—————————————————————————————————————————————————————
2.6程序流程控制
- 判断
- 选择
- 循环
2.6.1判断结构
if语句
三种格式:
- if语句特点:
a,每一种格式都是单条语句。
b,第二种格式与三元运算符的区别:三元运算符运算
完要有值出现。好处是:可以写在其他表达式中。
c,条件表达式无论写成什么样子,只看最终的结构是
否是true 或者 false;
2.6.2选择结构
格式:
switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
……
default:
执行语句;
break;
}
- switch语句特点:
1.switch语句选择的类型只有四种:byte,short,int,char。
2.case之间与default没有顺序。先执行第一个case,没有匹配的case执
行default。
3.结束switch语句的两种情况:遇到break,执行到switch语句结束。
4.如果匹配的case或者default没有对应的break,那么程序会继续向下
5.执行,运行可以执行的语句,直到遇到break或者switch结尾结束。
2.6.3循环结构
代表语句:while do while for
while语句格式:
while(条件表达式)
{
执行语句(循环体);
}
do while语句格式;
do
{
执行语句
}while(条件表达式);
do while特点是条件无论是否满足,
循环体至少被执行一次。
for语句格式:
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;
}
注意:
a,for里面的连个表达式运行的顺序,初始化表达式只读一次,判断循环条件, 为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件, 重复找个过程,直到条件不满足为止。
b,while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就是 在内存中释放。而while循环使用的变量在循环结束后还可以继续使用。
c,最简单无限循环格式:while(true) , for(;;),无限循环存在的原因是并不知道循
环多少次,而是根据某些条件,来控制循环。
2.6.4其他流程控制流语句
break( 跳出), continue( 继续)
break语句:应用范围:选择结构和循环结构。
continue语句:应用于循环结构。
注意:
1.这两个语句离开应用范围,存在是没有意义的。
2.这个两个语句单独存在下面都不可以有语句,因为执行不到。
3.continue语句是结束本次循环继续下次循环。
4,标号的出现,可以让这两个语句作用于指定的范围。
练习:
1.练习:获取1到10 10个数字的和。
/*
练习:
获取1到10 10个数字的和。
推算:
第一次 1+2
第二次 3+3
第三次 6+4
第四次 10+5
思路:
每次都是和加上数值
数值一直是递增的
步骤:
1.定一个类。
2.写主函数。
3.定义一个变量存储1到10.
4.定一个变量存储1到10的和
5.使用while循环求和
*/
//累加思想
public class WhileTest{
public static void main(String[] args){
int x=1;
int sum=0;
while(x<=10){
sum+=x;
x++;
}
System.out.println(sum);
}
}
2.练习:1~100之间 6的倍数出现的次数。
/*
练习:
1~100之间 6的倍数出现的次数。
要求:自己独立完成思想的书写。和步骤的文字描述。
思想:
1.先从一个数开始,给我一个数如何知道是6的倍数,尝试用已经知道6的倍数进行研究,找到(规律)共性。
比如6/6=1 12/6=2 18/6=3 貌似只是能除尽, 试试7/6=1余数1 试试取模
6%6=0 12%6=0 找到规律。6的倍数对6取模为0;
2.1到100需要一个个取出来对6取模,数值在变化,不确定。
3.如果找到6的倍数,需要记住次数,次数也变化,不确定。
4分析整个过程,主要是
取数据--》取模--》判断是6的倍数?--》是--》记数增加--》取数据
--》否--》取数据
步骤重复,考虑使用循环。
步骤:
1.定义一个变量,存储1到100中的数据,
2.定义一个变量,存储出现的次数。
3.定义一个变量,存储数据对6取得的模。
3.使用while循环,循环100次,取得1到100的数据,
3.1 取得数据对6取模
3.2判断模是否等于0
3.3等于
出现次数加一次
3.4不等于
数据自增
*/
// 计数器思想
public class WhileTest2{
public static void main(String[] args){
int i=1; //控制循环次数
int num=1; //数据1到100
int count=0; //6的倍数出现次数
int mo=0; //模
while(i<=100){
mo=num%6;
if(mo==0){
count++;
System.out.println("第"+count+"个6的倍数是:"+num);
}
num=num+1; //控制数据自增规律
i++;
}
System.out.println("count="+count);
}
}
- day02-语言基础(2)
- day02-语言基础(1)
- day02 java语言基础(变量)
- day02<Java语言基础+>
- day02 Java语言基础语法
- Day02 --计算机基础知识 java语言基础
- JAVASE基础-day02(Java语言基础)
- JAVA语言基础 +JAVA学习笔记-DAY02
- day02 Java之语言基础组成
- day02基础
- 黑马程序员——Day02之Java语言基础组成(一)
- 黑马程序员_Java基础Day02(上)_Java语言基础(Done)
- Java Day02-2(字符串)
- Day02-2
- c语言学习day02
- C语言DAY02 - 数据类型
- C语言,day02
- java基础day02
- Android-monkey测试fd泄露
- 关于第7讲3D-2D实践程序中DMatch m:matches的理解
- 调整一组数据使得奇数位 位于偶数位的前面
- 练习题2
- CCF认证201503-2 数字排序
- day02-语言基础(2)
- 每日英语阅读(五十二)
- 日常分享 -(Android)混淆导致断点调试失败
- Linux服务器程序规范
- 数据结构之算法时间复杂度
- 温度
- 一晚上总结出来的安装scipy.........
- java多线程任务队列模型
- 日常分享 -(Chrome)标签页背景插件