Java入门2

一.运算符

1.算术运算符

        1.1.基本算术运算符:+,-,*,/(默认取整),%(求余数)

1.2扩展的算术运算符:++,--

        使用方式:

        a.单独使用:无论在数据前还是数据后,都是对当前变量自增1或自减1

        b.参与运算时:

                在数据前:先将当前变量本身的值自增1或自减1,然后在参与运算。

        在数据后:先参与运算,然后变量本身的值进行自增1或自减1

2.赋值运算符

        2.1基本的赋值运算符:=(将等号后面的值赋给等前面的变量)

        2.2扩展的赋值运算符:+=,-=,*=,/=,%=

                将符号变量的值和右边的数据相+(-,*,/,%),然后再将结果赋给左边的变量

        例如:

a += 1  类似于   a  =  a+1 
short a += 1  等价于  short a  = (short )(a+1)//特点:隐藏了强制转换

3.关系(比较)运算符

        3.1关系(比较)运算符:<,>,<=,>=,==,!=(最终结果都是boolean(true/false))

        3.2注意事项:==不能写成=,=也不能写成==;==是比较连接的两个基本数据类型,比较数据值是否相同。

4.逻辑运算符

        4.1基本逻辑运算符:

                逻辑单与&:有false则false,不具有短路效果,左边为false右边依旧要执行。

                逻辑单或|:有true则true,不具有短路效果,左边为true右边依旧要执行。

                逻辑异或^:相同为true,不同为false

                逻辑非!:非true则false,非false则true

        4.2扩展的逻辑运算符:

                逻辑双与&&:有false则false,当表达式左边为false则右边不在执行,具有短路效果。

                逻辑双或||:有true则true,当表达式左边为true则右边不在执行,

5.位运算符

        5.1位运算符:针对多个数据进行操作(用补码计算结果),计算的结果是具体的数据值

        5.2基本的位运算符:

                位与&:有0则0

                位或|:有1则1

                位异或^:相同则为0,不同则为1

                           特点:一个数据被另一个数据位异或两次,其值还是他本身。

                反码~:全部按位取反,0—>1,1—>0

5.3位移符号:

        <<:左移:将<<左边的数据乘以2的移动次幂

                将这个数据的补码向左移动指定的位数,右边不够的补0,左边多余的丢掉。

        >>:右移:将>>左边的数据除以2的移动次幂

                将这个数据的补码向右移动指定的位数,如果最高符号位为0,则左边不够的补0;如果最高符号位为1,则左边不够的补1,右边多余的丢掉。

        >>>:无符号右移

将这个数据的补码向右移动指定的位数,无论最高符号位为0还是1,左边始终补0

6.三目(三元)运算符

        6.1格式:

(表达式)?执行语句1(具体的结果):执行语句2(具体的结果)
// 执行流程:判断表达式的结果,成立则执行语句1,不成立则执行语句2

        6.2三目(三元)运算符的嵌套格式:

(表达式1)?((表达式2)?(执行语句1):(执行语句2)):((表达式3)?(执行语句3):(执行语句4))

二.键盘录入数据

        Jdk提供的Scanner类:文本扫描器类,可以用Scanner来使用键盘录入我们定义的变量用来可以提高程序的灵活性。

        1.使用步骤

//(1)导包
import java.util.Scanner;
//(2)创建文本扫描器
Scanner sc = new Scanner(System.in);//sc:对象名
//(3)提示并录入数据,默认录入int类型
System.out.println("请输入一个数据:");
int sc1 = sc.nestInt();//sc1:变量名
 //(4)使用变量进行操作

2.键盘录入数据的细节

        先录入int类型,在录入String类型时,字符串数据没有值。

        原因:"enter"(回车键)本来就是一个字符数据,按下之后就会导致字符串数据并没有录入,而是空行。

        解决方案:

                (1)使用next()录入

                (2)在使用nextLine()录入时,重新创建文本扫描器。

3.键盘录入字符时,并不能录入字符类型。

        解决方案:

                (1)使用强制类型转换,将char类型转换为int类型,再在ASCLL码表中找到相应的数值录入。

                (2)使用String类型录入。

三.流程控制语句

1.分类:

        a.顺序结构语句

        b.选择结构语句

        c.循环结构语句

2.顺序结构语句:

        当进入到类里面后,由JVM调动main方法,代码由上到下依次加载。

        特例:当JVM退出时不会在执行了,即System类中的一个功能:exit(int status),参数为0时,表示正常终止JVM。

3.选择结构语句

        3.1分类

                a.if语句

                b.switch语句

                3.2if语句

                        格式1:针对一种情况进行判断

if(表达式){
    语句;
}
/*
执行流程:首先判断表达式是否成立,成立则执行语句,不成立,则不会进入if语句中
*/

                        格式2:针对两种情况进行判断

if(表达式){
    语句1;
}else{
    语句2;
}
/*
执行流程:首先判断表达式是否成立,成立则执行语句1,不成立则执行语句2。
if格式2与三元运算符的区别:
    if是一个流程控制语句:不仅能够表示具体的结果,还可以用一个输出语句来体现
    三元运算符:只能够表示具体到结果
    三元运算符能实现的,if格式2一定可以体现;反之,则不行。
*/

                        格式3:针对多种情况进行判断

if(表达式1){
    语句1;
}else if(表达式2){
    语句2;
}else if(表达式3){
    语句3;
    ...
}else{
    语句n+1;
}
/*
执行流程:首先判断表达式1,成立则执行语句1;不成立则判断表达式2,
成立则执行语句2;不成立则判断语句3,成立则执行语句3....
如果上方表达式都不成立,则执行语句n+1
*/

3.3switch语句

        3.3.1switch语句格式

switch(表达式){
    case 值1:
        语句1;
        break;
    case 值2:
        语句2;
        break;
    default:
        语句n+1;
        break;
}
/*
执行流程:当表达式的结果值遇见case语句中等值1时,
匹配,则执行语句1,遇见break,流程结束;不匹配时,
继续判断是否与值2匹配,匹配,则执行语句2,遇见break,
流程结束...如果与case中的值都不匹配,
程序则执行default语句,执行语句n+1,程序执行到末尾结束。
*/

        3.3.2.break:结束,中断;属于跳转语句的一种,不能单独使用,只能在switch和循环语句中使用。

        3.3.4.switch的表达式可以使用的数据类型

                a.可以使用的基本数据类型:int,short,byte,char

                b.Jdk5以后可以使用:枚举

                c.Jdk7以后可以使用String类型

        3.3.5.switch的注意事项

                a.case语句后面的值只能是常量

                b.case穿透:当某个case语句中没有携带break时,此时与case语句的值匹配时程序就会继续执行下去,不会在判断case

                c.default语句可以在switch语句的任何位置,可以不带break,但是如果在语句中不带break则会造成case穿透

                d.switch语句的结束条件:遇见break结束,程序默认执行到末尾

3.3.6.switch模拟单项选择题

        因为键盘录入数据无法录入字符,所以有两种方式:

                方式1:录入int数据,强制转换为char类型

                方式2:录入字符串(String)类型

4.循环结构语句

        4.1.for循环语句

              4.1.1for循环语句格式

for(初始化语句;条件表达式;步长语句/控制体语句){
    循环体语句;
}
/*
执行流程:初始化语句对变量进行赋值,接着判断条件表达式是否成立,
成立则执行循环体语句;接着执行控制体语句,
继续会到条件表达式判断是否成立,成立则继续执行循环语句体;
接着执行控制体语句...一直执行到语句不成立结束
*/

                4.1.2.求和思想

                        a.定义一个最终的结果变量

                        b.使用循环语句,明确循环次数

                        c.循环体语句:最终结果变量+=变量;

               4.1.3阶乘思想:类似于求和思想

                2.1.4.水仙花数:个位数的3次方+十位数的3次方+百位数的3次方=水仙花数

//取值范围:100~999
//变量的定义:
int geWei = i%10;
int shiWei = i/10%10;
int baiWei = i/10/10%10;
//加入判断
if((geWei*geWei*geWei+baiWei*baiWei*baiWei+shiWei*baiWei*baiWei)===i){
    //输出语句
}

                      

        4.2.while语句

               4.2.1 while语句格式:

初始化语句;
while(条件表达式){
    循环体语句;
    控制体语句;
}
/*执行流程:首先初始化赋值;接着判断条件表达式,
成立则执行循环体语句;接着执行控制体语句,
继续判断条件表达式,成立则继续执行循环体语句....
一直执行到条件表达式不成立while语句结束。
*/

                4.2.2while语句与for语句的不同:

                        共同点:都能够实现循环效果。

                        不同点:

                                a.格式不同

                                b.for语句运行结束之后,局部变量被释放,节省了内存,访问不到局部变量。

while语句实在main方法结束之后才释放内存,在使用过程中依旧可以访问到局部变量。

                                c.明确循环次数时使用for语句,不明确时使用while语句。

                4.2.3死循环:

                       a. for循环的死循环:

for(初始化语句;条件表达式;控制体语句){
    判断条件,当满足某个条件时结束循环,即break;
    循环体语句;
}

                b.while循环的死循环(开发中使用居多):

while(true){
    判断条件,当满足某个条件时结束循环,break;
    循环体语句;
}

        4.3.do_while语句

                do_while语句格式:

初始化语句;
do{
    循环体语句;
    控制体语句;
}while(条件表达式);
/*
执行流程:首先对初始化语句赋值;然后执行循环体语句;
接着执行控制体语句;接着判断条件表达式,
成立则继续执行循环体....一直到条件表达式不成立,
do_while语句结束。
*/

与for,while循环语句的最大区别:当条件表达式不成立时,循环体语句最少执行一次。

        4.4.for循环的嵌套

for循环嵌套:将一个for循环语句作为循环体语句去执行

for(初始化语句;条件表达式;控制体语句){//外层循环
    for(初始化语句1;条件表达式1;控制体语句1){//内层循环
        循环体语句;
    }
}

5.跳转控制语句

        5.1break(中断,结束):不能单独使用,只能在switch语句和循环语句中使用。

                for循环中使用

for(int i = 0 ; i < 10 ; i++){
    if(i==2){
        break;//结束循环,最终打印结果为0,1
    }
}

                在for循环嵌套中使用:break 标签语句;

wc:for(初始化语句;条件表达式;控制体语句){//外层循环
    nc:for(初始化语句1;条件表达式1;控制体语句1){//内层循环
        循环体语句(判断条件);
        //break wc;   结束外层循环
        //break nc;   结束内层循环
    }
}

        5.2.continue(结束当前循环,立即进入下次循环):不能单独使用,只能在循环中使用

for(int i = 0 ; i <= 5 ; i++){
    if(i==2){
        continue;//结束循环,最终打印结果为0,1,3,4,5
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值