1.逻辑运算符
逻辑与 & 遇false则false
逻辑或 | 遇true则true
逻辑异或 ^ 两边相同为false 两边不同为true
逻辑非 ! 相反
&和&&的区别 |和||的区别
&和|无论左边怎么样 右边都执行
&&左边为false,右边不执行
||左边为true,右边不执行
2.位运算符
位与 & 有0则0
位或 | 有1则1
位异或 ^ 相同为0不同为1
位非 ~ 按位取反
System.out.println(6&3);
System.out.println(6|3);
System.out.println(6^3);
System.out.println(~6);
输出结果为:
2
7
5
-7
因为是按照二进制进行计算的。
位与为例子: 110&011 有0为0 010 换算回十进制是2
位异或运算符
一个数据被另一个数据异或两次,该数不变
System.out.println(5^10^10);
System.out.println(10^20^10);
输出结果为5 20
面试题一则:不借助第三方变量实现两个整数变量互换
x=x+y;(此时x为总和)
y=x-y;(y=总和-y 就是以前x的值)
x=x-y;
(存在弊端,可能超出数据类型的取值范围)
使用异或可以避免
x=x^y;
y=x^y; //y=x^y^y 也就是y=x
x=x^y; //x=x^y^x 此时x=y
3.左移右移
左移就是乘2的几次幂 右移就是除以2的几次幂
最快速算出2*8
2<<3
4.三元运算符
(关系表达式)?表达式1:表达式2;
比较两个整数是否相同
int a = 10;
int b = 10;
boolean c = (a == b);
System.out.println(c);
默认是()?true:false
获取三个数中的最大值
先对两个数字使用三元运算符比较,再把得到的数字和第三个数字进行三目运算
5.键盘录入
第一个对象 Scanner
第一个包 java.util.Scanner
可以用来测试上面的实:①输入三个数,输出最大的 ②输入两个数,完成简单的求和 ③判断输入的两个数是否相等
6.选择结构if语句
第一种结构if(){} true就执行语句 false就不执行(注意事项:①比较表达式一定要为boolean类型②单个语句(int x =10是两个语句 int x 是声明语句 x=10是赋值语句)可以省略大括号,但是建议一直不要省略)
第二种if(){} else{}结构 (可以用来做①判断奇数偶数②替代三元运算符)
第三种if() {} else if(){} else if(){}else()
if语句的嵌套可以用来实现求三个数中的最大值
7.选择结构switch语句
switch(){case :; case :;default:;}
switch里面是表达式,不是关系表达式,表达式可以接受(基本类型:byte,short,char,int 引用类型:jdk1.5接受枚举 jdk1.7接受string字符串)
注意事项:①case后面的只能是常量②而且值不能重复③只能省略最后一个break,以免出现break穿透④一般不要省略default,防止意外⑤default一般放在最后,但不是必须,其执行顺序在最后
8.switch和if
switch建议判断固定值的时候使用
if建议在判断范围的时候使用(比如输入月份,判断季节用if,判断是几月份用switch)
9.循环结构for语句
最经典也最常用 for(int i=0;i<10;i++).........在循环结构完成后,for后面表达式里面的变量会被释放
典例:输出100-999的所有水仙花数
for (int i = 100; i < 999; i++) {
int ge =i%10;
int shi =i/10%10;
int bai=i/10/10%10;
if(ge*ge*ge+bai*bai*bai+shi*shi*shi==i){
System.out.println(i);
}
}
最简单的求水仙花数,切记:一般运算中最后都要归结到取模获取目标位置的数字。这样格式统一看起来简洁。
这里有一个计数器思想用来处理统计类型的需求
需要设置变量用做统计,满足条件就自增。
10.循环结构while语句
无论是选择结构还是循环结构,表达式小括号和循环体语句中间不能有;
11.循环结构do……while语句
do……while至少执行一次。因为是先执行再判断。
12 .死循环两个
while(true){}
for(;;){}
13.循环语句嵌套实例
输出三角形
for (int i = 1; i <= 5; i++) {
for (int x = 1; x <= i; x++) {
System.out.print("*");
}
System.out.println();
}
输出99乘法表
for (int i = 1; i <=9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j+"*"+i+"="+(j*i)+" \t");
}
System.out.println();
}
将*换为对应的拼接字符串
14.转义字符
System.out.println("\""); // 转义双引号
System.out.println('\''); // 转义单引号
System.out.println("\r"); // 回车
System.out.println("/n"); // 换行
15.控制跳转语句
* return和break以及continue的区别?
* return是结束方法,下面的代码也不执行
* break是跳出循环
* continue是终止本次循环继续下次循环
利用一段代码说明
for (int i = 1; i <=10; i++) {
if(i%3==0){
// break; //直接跳出循环,只输出了i=1,2时候的情况(两个)
// continue; //1~10除去三六九,输出了七个
// System.out.println("测试代码"); //十三个,1~10输出了一次,369各自多输出一次
}
System.out.println("测试代码");
}
16.控制跳转语句标号
只要是合法的标识符就可以
标号:代码块
一个正常的嵌套循环:
outer: for (int i = 1; i <= 10; i++) {
System.out.println("i=" + i);
inner: for (int j = 1; j <= 10; j++) {
System.out.println("j=" + j);
break;
}
}
i不断增加,j每次输出1就跳出。
利用标号之后:
outer: for (int i = 1; i <= 10; i++) {
System.out.println("i=" + i);
inner: for (int j = 1; j <= 10; j++) {
System.out.println("j=" + j);
break outer;
}
}
输出结果为i=1 j=1 直接跳出外层循环。
所以标号在实际的应用中主要作用就是跳出外层循环
代码分析:
System.out.println("千山鸟飞绝");
http://www.4399.com;
System.out.println("万径人踪灭");
会不会报错?不报错的话会输出什么?
输出结果为两句诗词。因为http:是一个标号,后面跟了一个单行注释。http是sysout万径人踪灭的标号。
17.方法
实参和形参(形参是方法描述,实参是实际参与运算的。也就是说方法定义中的参数是形参,调用方法中的参数是实参)
盘子=炒菜(土豆,盐,30,大);
盘子 炒菜(主材,佐料,烹饪时间,火候){
炒菜的具体操作
return 一盘菜;
}
18.方法的重载
方法重名,但是参数列表不同(参数数目,参数类型不同等)