javaSE基础-运算符、条件、循环

javaSE基础

1. 基本数据类型转换

java中8种基本类型可以从任意类型转换到其他的类型,但是boolean类型除外。

数据类型转换可分为:默认转换和强制转换。

1 默认转换

容量小的类型默认转换为容量大的类型。

数据类型容量有低到高:byte,short,char>int>long>float>double。

byte、short、char三者不会相互转换,但它们在计算时会转换为int类型

2 强制转换

容量大的类型转换为容量小的类型,要加上强制转换符。

long x=1000L;
int y=(int) x;

强制类型转换存在两个问题

1)溢出。数值超过类型小的表示范围。

2)精度降低。浮点型转换为整数型时,只会保留整数部分。

2.运算符

1 算术运算符

+-*/
正数,加法,字符串连接减法,负数
%++
取余自加自减
++a(先自增,再取值)–a(先自减,再取值)
a++(先取值,在自增)a–(先取值,再自减)

2 比较运算符

==(相等于),!=(不相等)
数值与数值,布尔与布尔,引用类型与引用类型之间进行比较
运算符运算
<小于
>大于
<=小于等于
>=大于等于
instanceof检查是否是类的对象

3 逻辑运算符

逻辑与逻辑或逻辑异或逻辑非短路与短路或
&|^!&&||
aba&ba|b!aa^ba&&ba||b
truetruetruetruefalsefalsetruetrue
truefalsefalsetruefalsetruefalsetrue
falsetruefalsetruetruetruefalsetrue
falsefalsefalsefalsetruefalsefalsefalse

&,|,^左右操作数为逻辑值(true/false)为逻辑运算,其余为位运算。

&&(短路与):遇到第一个false就短路,后面的表达式不再运算。

||(短路或):遇到第一个true就短路,后面的表达式不再运算。

int a=10;
int b=5;
int c=3;

System.out.println(a<b&&a++<c);//false && false = false
System.out.println(a>b&&a<c);//true && true =true
System.out.println(a);

System.out.println(a<b||++a>c);//false || true =true
System.out.println(a>b||a<c);//true || false =true

4 赋值运算符

符号:=

当"="两侧的类型类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。

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

运算符用法举例等效表达式
+=a+=ba=a+b
-=a-=ba=a-b
*=a*=ba=a*b
/=a/=ba=a/b
%=a%=ba=a%b

5 条件运算符

语法:(条件表达式)?表达式1:表达式2;表达式1和表达式2为同种类型

为true,执行表达式1;为false,执行表达式2.

int a=10;
int b=5;
int h=(a>b)?a:b;
System.out.println(h);//输出m为10

6 位运算

位运算是二进制(bit位)上的运算,因此执行效率高。

左移右移无符号右移异或
<<>>>>>&|^~

无符号右移:被移位二进制最高位无论是0或者是1,空缺位都用0补。

& 二进制位进行&运算,只有1&1时结果是1,否则是0.

| 二进制位运算|运算,只有0|0结果是0,否则是1。

^ 异或,相同为0,不同为1。
运算分三步:1. 求补码 正数的原码,反码,补码,一样。负数是符号位不变,取反加一。
  1. 连同符号位取反。
  2. 求第二步的原码,正数不用求就是原码,负数是符号位不变,取反加一。
		int a=3;
        int b=5;
        int c=a&b;//c=1
        /*
            0011
            0101
            0001=1
         */
        System.out.println(c);

        int n=a|b;//n=7
        /*
        0011
        0101
        0111=7
         */
        System.out.println(n);

        int m=a^b;//m=6
        /*
        0011
        0101
        0110=6
         */
        System.out.println(m);

7 控制台输入

使用标准输入串System.in

使用Scanner取得一个字符串或一组数字。

在新增一个Scanner对象时需要一个System.in对象,因为实际上是System.in在取得用户输入。Scanner的next()方法用以取得用户输入的字符串;nextInt()将取得的输入字符串转为整数类型;同样,nextFloat()转换浮点型,nextBoolean()转换为布尔型。

import java.util.Scanner;
//在使用Scanner对象时,需要在文件头带入java.util.Scanner
public class ScannerDemo {
    public static void main(String[] args) {
        System.out.println("请输入一个数字");
        Scanner s=new Scanner(System.in);//创建一个Scanner对象
        int read=s.nextInt();
        System.out.println("请输入一个名字");
        String name=s.next();
        System.out.println(read);
        System.out.println("名字是"+name);
    }
}

8 条件语句

根据不同条件,执行不同语句。

1)if语句
if(条件表达式){表达式返回true,执行此语句块}else{表达式返回false,执行此语句块}
if(){}else if(){}
if(){}else if(){}{只有以上的表达式全部为false,才能执行此语句块}

条件表达式必须是一个返回布尔结果的表达式

2)分支语句(switch)

多分支选择语句,根据表达式的值,来执行多个操作中的一个。

switch(表达式){
    case value1:语句序列1;
        [break];
    ……    
    case valueN:语句序列2; 
        [break];
    [default:缺省语句;]    
}

表达式可以是byte、short、int、char、枚举类型。JDK7以后,可以使用String类型。

case语句后面只能使用常量表达式。

case后的值不能重复。

如果某个case分支如果没有提供break语句,则继续执行下个case后的语句。

当表达式的值与任一case中的值都不匹配时,将执行default后面的语句;如果没有default子句,则程序直接跳出switch语句。

public class Switch {
    public static void main(String[] args) {
        int age=18;
        switch (age){
            case 18:
                System.out.println("年轻人");
                break;
            case 19:
                System.out.println("大学生");

        }
    }
}

if语句和switch语句语句的对比

  1. 如果判断的数值不多,而且符合byte、short、int、char这四种类型。建议使用switch语句,效率会高一点。
  2. 对区间判断,对结果为boolean类型判断,使用if,它的范围更广。

9 循环

循环语句功能:在某些条件满足的情况下,反复执行特定代码的功能。

循环语句的四个组成部分:循环变量的初始化,循环部分,循环体部分,循环变量的更新。

循环语句分类:while循环,do/while循环,for循环

1.while循环

语法:

while(逻辑表达式){语句;……;先判断表达式,若=true.则执行其后面的语句,然后再次判断条件并反复执行,直到条件不成立}

public class While {
    public static void main(String[] args) {
        int i=2;
        while(i<20){
            System.out.println(i);
            i=i*i;
        }
    }
}
2.do while循环

语法:

do{

循环体

}while(逻辑表达式)

先执行语句,再判断逻辑表达式的值,若为true,再执行语句,否则结束循环。

public class DoWhile {
    public static void main(String[] args) {
        int i=2;
        do{
            i=i*2;
            System.out.println(i);
        }while(i<50);
    }
}
3 for循环

语法:

for(初始化变量;条件;变量迭代){

循环体;

}

for循环体除了标准式之外,还有两种变式,和一种死循环。

for的死循环语句,相比于while的死循环语句,由于while循环体需要进行判断,因此for死循环更加的效率。

public class For {
    public static void main(String[] args) {
        /*for(int i=0;i<50;i++) {
            int j = i * i;
            System.out.println(j);
        }*/
        //99乘法表
        for (int i=1;i<10;i++){
            for(int j=1;j<=i;j++){
                System.out.print(i);
                System.out.print("*");
                System.out.print(j);
                System.out.print("=");
                System.out.print(i*j);
                System.out.print(' ');
            }
            System.out.println();
        }
    }
}

10 break&continue

break:用于终止某个语句块的执行,用在循环体语句中,可以强行推出循环。

break终止语句有两种类型:1.只能终止紧挨的上层语句块

2.通过标签终止指定语句块

int i = 1;
        //当i = 7跳出这个循环
        while(i <= 10){
            System.out.println(i);
            i++;
            if(i == 7){
                break;
            }
        }

continue:用在循环语句体中,用于终止某次循环过程,跳过循环体中continue语句下面未执行的循环,开始下一次循环过程。

 int k = 0;
        while(k < 10){
            if(k == 7){//当i = 7,跳过这次循环
                continue;
            }
            System.out.println(k);
            k++;
        }

11 嵌套循环

将一个循环放在另一个循环体内,就形成了嵌套循环。其中for、while、do……while均可作为外层循环和内层循环。

实践上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完成跳出内层循环,才可结束外层的当次循环,开始下一次的循环

结束外层循环:如果需要从多层循环跳出,则需要使用标签,先定义再使用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值