第三章、java基础知识

目录

一、类型转换

1、自动类型转换

2、表达式的自动类型转换

3、强制类型转换

二、运算符

1、基本运算符

2、自增、自减运算符

 3、赋值运算符

 4、关系运算符

 5、逻辑运算符

 6、三元运算符

 7、键盘录入案例、API

 三、流程控制语句

1、分支结构

1.1、if分支

1.2、switch分支

2、循环结构

2.1、for循环

2.2、while循环

2.3、do-while循环

2.4、三种循环的区别

 2.5 死循环及强制退出死循环

2.6、嵌套循环

2.7、跳转控制语句

 3、随机数Random

案例:猜数字游戏


一、类型转换

1、自动类型转换

类型范围小的变量可以直接赋值给类型范围大的。

byte a = 20;
int b = a;  //发生了自动类型转换
        

注意:byte、short、char在运算中是当成int型参与计算

2、表达式的自动类型转换

byte c = 10;
int d = 20;
double e = 2.1;
double h = c + d;  //表达式自动转换类型为double类型,占字节数最多
System.out.println(h);
//面试题
byte a1 = 100;
byte a2 = 120;
int a3 = a1 + a2; 
//要求输入a3的类型,byte型数据在运算中是当作整型运算,因为两个byte型相加可能会超过byte的范围
System.out.println(a3);

3、强制类型转换

类型范围大的数据或者变量,不能直接赋值给类型范围小的变量,会报错。

通过强制类型转换可以将类型范围大的变量、数据赋值给类型范围小的变量。

double b;
int a = (int)b;

强制类型转换可能造成数据(丢失)溢出

二、运算符

1、基本运算符

对字面量或者变量进行操作的符号。


System.out.println(3 / 2);  //默认为整型输出,强制为浮点型输出只需要 3*1.0/2
System.out.println(3 * 1.0 / 2);

+符号在java中还可以用作连接符:

  • 与字符串作+运算时会被当成连接符,其结果还是字符串。
  • 能算则算,不能算就连在一起
int a = 5;
System.out.println("abc" + "a");  //abca
System.out.println("abc" + a);  //abc5
System.out.println(5 + a);  //10,能算则算
System.out.println("abc" + 5 + 'a'); //abc5a
System.out.println(15 + "abc" + 15); //15abc15
System.out.println(a + 'a'); //102
System.out.println(a + 'a' + "abc"); //102abc

2、自增、自减运算符

 注意事项:

++在前,表示先加一操作,取加一后的值进行运算;

++在后,表示先拿变量值作运算,再将变量加一;

面试题:

int k = 3;
int p = 5;
//k 3 4 5 4
//p 5 4 3 4
//rs     3   +   5 -  4  +  4  - 5   +  4  + 2
int rs = k++ + ++k - --p + p-- - k-- + ++p + 2;
System.out.println(k); //4
System.out.println(p); //4
System.out.println(rs); //9

 3、赋值运算符

 4、关系运算符

 5、逻辑运算符

 &真 (都真为真),| 假 (都假为假),^逻辑异或(相同为假,不同为真)

短路逻辑运算符

&&优先级大于||

 6、三元运算符

格式:  条件表达式 ?值1:值2

//求最大值
int max = a > b ? a : b;

 三元运算符的嵌套,求三个数的最大值

 max = a>b?a>c?a:c:b>c?b:c;
//加上括号后更容易理解
max = a>b?(a>c?a:c):(b>c?b:c);

 7、键盘录入案例、API

API是什么:

  • Application Programming Interface,应用程序编程接口
  • 就是java写好的程序,可以直接调用

import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        //得到键盘扫描器对象
        Scanner sc = new Scanner(System.in);
        System.out.print("请您输入年龄:");
        //调用sc对象的功能,等待接受用户输入的数据
        //sc.nextInt() 他会等待用户输入数据,直到用户输入完数据并回车就会把数据拿到,用age接收
        int age = sc.nextInt();
        System.out.println("您的年龄是" + age);

        System.out.print("您的名称是:");
        String name = sc.next();
        System.out.println("您的名字是" + name);
    }
}

 三、流程控制语句

1、分支结构

1.1、if分支

根据判定结果决定执行某个代码

1.2、switch分支

if、switch适用场景:

  • if在功能上远远强大于switch
  • if适合做区间匹配
  • switch适合做:值匹配的分支选择、代码优雅

switch注意事项:

  • 表达式类型只能是byte、int、char、short,枚举、String,不支持double、float、long。
  • case 值不允许重复。
  • 正常的case后的break不要忘记,否则出现穿透现象。

 switch的穿透性:

存在多个case分支的功能代码是一样的时,可以用穿透性把流程集中到同一处处理,这样可以简化代码。

2、循环结构

2.1、for循环

快速生成for循环 :   fori

求1-10的偶数和

int sum = 0;
for (int i = 1; i <= 10; i++) {    //也可以直接将i++写成i+=1
    if(i % 2 == 0) {
        sum += i;
    }
}
System.out.println(sum);

求水仙花数:

int i, count = 0; 
for (i = 100; i < 1000; i++) {
    //个位
    int ge = i % 10;
    //十位  i/10%10
    int shi = i / 10 % 10;
    //百位  i/100
    int bai = i / 100;
    if (i == (ge * ge * ge + shi * shi * shi + bai * bai * bai)) {
    //将数据不换行输出,并且数据间由空格,\t表示一个空格
          System.out.print(i + "\t");  
           count++;
     }
}
System.out.println();  //使下一个数据换行输出
System.out.println(count);

2.2、while循环

  • 当型循环,当满足条件时执行循环

 for与while的区别:

  • 功能上是完全一样的,for能解决的while也能解决。
  • 使用规范:直到循环次数用for,不知道循环次数用while。

2.3、do-while循环

  • 直到型循环

 循环体一定会执行一次。

2.4、三种循环的区别

 2.5 死循环及强制退出死循环

注意死循环中不能从键盘输入浮点型数据,因为第一次没有接到这个数据,死循环就会一直接,直接报错。

案例:用户输入密码,直到输入正确跳出循环,输出密码正确,否则输出密码错误。

public class LoopText2 {
    public static void main(String[] args) {
        //输入密码,输入正确进入,程序并关闭,错误,提示密码错误
        int psd = 123;
        Scanner sc = new Scanner(System.in);
        while (true)
        {
            System.out.print("请输入密码:");
            int userpsd = sc.nextInt();
            if (userpsd == psd) {
                System.out.println("密码正确,欢迎使用");
                break;
            }
            System.out.println("密码错误,请重新输入");
        }
    }
}

强制退出死循环:

OUT:
while(true) {
    ...
    语句1;
    //强制退出死循环
    break OUT;
    ...
}

2.6、嵌套循环

打印*****  图案
       *****
       *****
       ***** 

public class LoopDemo {
    public static void main(String[] args) {
        //嵌套循环

        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 5; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

2.7、跳转控制语句

 3、随机数Random

import java.util.Random;
public class RandomDemo {
    public static void main(String[] args) {
        //Rabdom 随机数
        //创建随机数对象
        Random r = new Random();
        //调用nextInt()方法返回随机数
        int data = r.nextInt(10);
        System.out.println(data);
    }
}

 Random提供的 nextInt(n)功能只能生成:0 -(n-1)之间的随机数。

要想生成其他范围的随机数,通过减加法实现:

r.nextInt(10) + 1       // 范围1 - 10        -->(0~9)+1  --> 1~10

案例:猜数字游戏

import java.util.Random;
import java.util.Scanner;

public class RandomText {
    public static void main(String[] args) {
        //新建键盘录入对象
        Scanner sc = new Scanner(System.in);
        //新建随机数对象
        Random r = new Random();
        //生成1~100的随机数
        int num = r.nextInt(100) + 1;
        //建立死循环
        while (true) {
            System.out.print("请您猜猜数字是多少:");
            //新建键盘录入接收对象
            int userNum = sc.nextInt();
            if(userNum < num){
                System.out.println("您猜的数字过小");
            }
            else if(userNum == num) {
                System.out.println("恭喜猜中");
                break;
            }
            else {
                System.out.println("您猜的数字过大");
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值