IDEA基础使用方法
1.创建项目:在src下先建包,格式:命名-域名+功能名,例:com.baidu.video 再建类;
2.右键 show in explorer 查看项目位置;
3.生成主方法 敲psvm 快速生成输出语句sout;
4.有红线-有语法错误;
5.单行注释 ctrl+/ (多行注释内可套单行注释 但不能再套多行注释);
6.多行注释 ctrl+shift+/ , ctrl+z 撤销;
7.ctrl+alt+L可以排版代码;
8.变量名.sout快速输出某个变量;
9.ctrl+shift+回车,自动补分号;
10.ctrl+alt+v 可以自动补全;
11.alt+enter,万能纠错键–纠错自动补全;
…
1.1逻辑运算符:逻辑运算符一般用于连接boolean类型的表达式或者值,运算结果是布尔型。
常用逻辑运算符 | 效果 |
---|---|
并且& | 同真为真 一假则假 可以连续多个使用 |
或者l | 一真则真 全假才假 (也可以在sout输出语句中直接输出运算结果) |
非! | 取反 真变假 假变真 |
异或^ | 相同为假 不同为真 |
短路与’&&’ 短路或(ll) | 和&、l在运算结果上没有区别,但是在运算效率上有区别(用&&和ll时如果左边的表达式或值可以确定最终结果,则不执行运算右边的表达式 所以可以提高运算效率,因此大部分用 &&、ll) |
1.2位运算符:直接对二进制补码进行运算,效率更高(如果对数值进行运算&、 |、 ^则为位运算符,两端如果是布尔类型则是逻辑运算符)
常用逻辑运算符 | 效果 |
---|---|
& 与 | 有0则0 全1才1 (1-true 0-false) |
l 或 | 有1则1 全0才0 |
^ 异或 | 相同为0 不同为1 一个数被另一个数位异或两次该数不变 |
~ 按位取反 | |
<< 左移 | 将3的二进制补码左移两位 被移除的高位丢弃 空位补零(3<<2.sout) ,快速计算:左边的数据乘2的移动次幂 例如 10 << 3 结果是 10*2^3=80 |
>>右移 | 正数补零 负数补一 这样比2*40得到80运算效率更高,快速计算:左边的数据除2的移动次幂 例如 10 >> 3 结果是 10/2^3=1 |
>>>无符号右移 | 被移位的最高位 正负都补零 |
案例知识点:值交换
a. 通过中间变量 进行值交换 (开发中常用);
b. 利用位异或^运算符特点:一个数被另一个数位异或两次该数不变;
c. 加减赋值。
1.3 三元运算符:表达式?结果1:结果2 当表达式的结果为true时返回结果1,为false时返回结果2。
例:输出a和b中较大的值
int a=20;
int b=200;
int max=a>b?a:b;
max.sout
例:求三个数最大值
int a=20;
int b=200;
int c=201;
int max1=a > b ? a : b;
int max2=max1>c?max1:c;
max2.sout
// 可以嵌套使用三元表达式 但是阅读性差 int max=(a > b ? a : b;>c)?(a > b ? a : b): c ;
键盘录入数据:Scanner 类 做键盘录入
1.导入包:在类的上面 import java.util.Scanner(IDEA中自动导入)
2.创建对象:对象名可以自己起 Scanner sc=new Scanner(System.in);
自动补全方法:先写后半段new Scanner() 然后alt+enter 万能纠错键–纠错自动补全,ctrl+alt+v 也可以自动补全
3.提示用户语句: “请输入一个整数:”.sout
4.通过对象获取数据:录入用户数据 int one=sc.nextInt();
5.处理数据;
6.输出
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说程序的流程对运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。
流程控制语句的分类:顺序结构 选择结构 循环结构
顺序结构:从上往下 依次执行
if(条件:结果是布尔类型的表达式/值,当结果为真时执行语句体){
语句体;
}
if(条件:当结果为真时执行这里的语句体){
语句体;
}esle{
当结果为假时执行这里的语句体
语句体;
}
例: 获取三个数最大值(获取和只打印不同)
if else可以嵌套使用,但是嵌套太多(3个以上)会降低阅读性
多重条件选择:
if(){
}else if(){
}else if(){
}else{
}
执行流程:
首先计算比较表达式1看其返回值是true还是false,
如果是true,就执行语句体1,if语句结束。
如果是false,接着计算比较表达式2看其返回值是true还是false,
如果是true,就执行语句体2,if语句结束。
如果是false,接着计算比较表达式3看其返回值是true还是false,
...
如果都是false,就执行语句体n+1。
注意事项: 当只要有一个条件满足时,if语句结束。else是可以省略,但是不建议省略。
三元表达式能写出来的if语句一定能写出来,if能写出来的三元表达式
switch表示这是switch语句
switch语句支持的数据类型-byte、short、int、char、string、枚举;
case后面带匹配的值一定是常量,不能写变量,跟的是要和表达式进行比较的值;
多个case的值全部是同一种类型,且不能有相同的;
switch(支持的数据类型){
case 某常量:
break;
case 某常量:
break;
...
default:
当所有的case都没有匹配上,执行默认项
break;
}
break–结束switch语句,可以省略,但是会发生case穿透的现象,也可以利用这种现象;
default项可以省略不写,就没有默认处理方式。
if语句和switch语句的区别:switch是针对有限个的常量进行选择的,不能对范围进行选择;而if能对常量进行选择,还能对范围进行选择。
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句。当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
循环结构for语句的格式:
for(int i=0;i<10;i++){
"我爱你".sout(条件体)
}
int i=0是循环的初始值;i<10是循环的条件,当条件为true是循环进行;i++是控制循环语句,每循环一次加1;
执行顺序:第一步执行赋值 第二步执行条件判断 第三步执行大括号里的循环体 第四步执行i++ 第五步重复2、3、4 直到执行条件不成立
例:统计水仙花数个数
package org.westos.demo;
public class MyTest4 {
public static void main(String[] args) {
/*A:
需求:在控制台输出所有的”水仙花数”
所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
举例:153 就是一个水仙花数。
153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3 = 1 + 125 + 27 = 153
*/
/*
* 难点:思路:153 取这个三位数,每一位上的数字 1 5 3
* int ge=153/1%10
* int shi=153/10%10
* int bai=153/100%10
*/
/*System.out.println(153%10);
System.out.println(153 /10% 10);
System.out.println(153 / 100 % 10);
*/
//统计水仙花数有几个
int count=0; //定义统计变量
for (int i = 100; i <= 999; i++) {
int ge = i / 1 % 10;
int shi = i / 10 % 10;
int bai = i / 100 % 10;
int flowerNumber = ge * ge * ge + shi * shi * shi + bai * bai * bai;
if (i == flowerNumber) {
System.out.println("水仙花数:" + i);
count++;
}
}
System.out.println("水仙花数有"+count+"个");
}
}