Java基础(二)

目录

1、思维导图

2、类型转换

3、键盘输入

4、运算符

1、算术运算符

2、赋值运算符

3、自增自减运算符

4、关系运算符

5、逻辑运算符

6、三元运算符

7、左移右移运算符

5、判断

1、if

2、switch

6、循环

1、for循环

2、while循环

3、do...while循环

4、循环跳转语句

5、循环嵌套

7、Random随机数


1、思维导图

2、类型转换

类型转换就是7种基本数据类型之间的转换,按照类型转换范围大小可分为自动类型转换和强制类型转换,数据范围如下:

自动类型转换:将数据范围小的类型转换为数据范围大的类型

        double d = 10;
        System.out.println(d); 

强制类型转换:将数据范围大的类型转换为数据范围小的类型

        int a = (int)3.14;
        System.out.println(a);

3、键盘输入

键盘输入中要用的是Scanner类,这个类的软件包再java util里,所以在用之前要导包,导包格式:在主方法上面,写上:import  java.util.Scanner;

然后开始创建对象,因为java是面向对象的语言,所以所有方法都是用对象来调用的,创建完之后,再根据自己要输入的内容,定义接受的对象即可

import java.util.Scanner;

public class Scanner {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int i = sc.nextInt();

几种常见的用法:

输入类型用法
整数型nextInt()
浮点数型(double)nextDouble()
字符串型next(),nextLine();(后者不常用)

4、运算符

1、算术运算符

算术运算符一共有5个,+        -        *        /        %

在数字类型的运算里面,和我们以前在数学上的用法是一样的,比较简单,博主就不具体用代码举例了

在字符里的就稍微有一些复杂了,当一个字符做+的时候,字符会变成数字参与加法,每个字符都有一个对应的底层的ASCII码,当字符做+时,字符便会转换成ASCII中对应的数字

例如:'a'——>97        ‘A’——>65        '0'——>48

记住这三个开头的码,那么后面的字母或者数字往后数就行了

汉字也是有对应的ASCII码的,不过没有规律,这也是汉字不能作为编程语言的原因之一

字符串里面的+,就是把两个字符串拼接,组成一个更长的字符串

需要注意的是:%,这个不是百分比的意思,而是取余,Java里没有百分比的概念

2、赋值运算符

赋值运算符,顾名思义就是给变量赋值的运算符,一共有6个

=        +=        -=        *=        /=        %=

这个也比较简单,会一个,其余的也就会了,例如+=

int a=10;

a=a+10;

a+=10;

其中a=a+10;和a+=10;是一个意思,其余的也如此类推

需要注意的是,=不读作等于,而是赋值,等于号是下文中提到的==

3、自增自减运算符

++        和        --

++给变量+1,--给变量减1,需要注意的是,自增自减运算符与变量位置的不同,那么运算也不同

当运算符前置,也就是运算符位于变量前面的时候,变量先+1,再进行运算

当运算符后置,也就是运算符位于变量后面的时候,变量先进行运算,再+1

4、关系运算符

一共有6个:

>        <        ==        !=        >=        <=

这里的==就是真正的等于号了,然后比较陌生的就是!=了,这个是不等于

关系运算符的结果一定是一个布尔值

5、逻辑运算符

逻辑运算符有三个:&&        ||        !

a && b

&&:逻辑与,当两边都是true的时候,结果才为true,两边只要有一个false,结果就为false

a || b

||:逻辑或,当两边只要有一个是true的时候,结果就是true,两边都是false,结果才为false

! a

!:取反,如果原来是true,取反后就是false

&&和||中,都各包含一个短路效果:

&&:如果左边已经是false的话,右边不执行

||:如果左边已经是true的话,右边不执行

6、三元运算符

三元运算符是在两个结果中选一个出来,通常用作比较两数大小

格式:关系表达式?结果A:结果B;

如果关系表达式为true,则输出A,如果为false,则输出B

        int a = 30;

        String s = a>20 ? "a大于20" : "a不大于20";

        System.out.println(s);

7、左移右移运算符

就是给变量数字底层的二进制进行移动

格式:        数字>>移动的位数

例如:4>>1,就是给4这个数字底层二进制向右移动1位

4的二进制数字:00000100

移动前:

00000100

移动后:

00000100

再进行补0,就变成了00000010,也就是2

所以右移一位,就相当于除2,以此类推,左移一位就相当于乘2

5、判断

1、if

f 语句是使用最多的条件分支结构。

例如当我们登录QQ的时候,如果密码正确,就登陆成功,如果密码错误,就登陆失败,这就是一个if判断

if 语句的最简语法格式如下,表示“如果满足某种条件,就进行某种处理”。

if的三种格式

第一种:

    if(布尔表达式){
        语句体;
        任意行代码;
    }
       
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int a = sc.nextInt();

        if(a>10){
            System.out.println(a + "大于10");
        }
    

第二种:

当单 if 语句仅能在满足一个条件的判断,而无法执行任何其他操作的时候,就该用第二种格式:if…else 语句。表示“如果条件正确则执行一个操作,否则执行另一个操作”。

    if(布尔表达式){
        语句体1;
    }else{
        语句体2;
    }
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int a = sc.nextInt();

        //判断
        if(a%2==0){
            System.out.println(a+"是偶数");
        }else{
            System.out.println(a+"是奇数");
        }

第三种:

然而,有时候程序中仅仅多一个分支是远远不够的,甚至有时候程序的分支会很复杂,这就需要使用多分支的 if…else if 语句。

    if(布尔表达式1){
        语句体1;
    }else if(布尔表达式2){
        语句体2;
    }else if(布尔表达式3){
        语句体3;
    }else{
        语句体4;
    }
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int a = sc.nextInt();

        //判断
        if(a>0){
            System.out.println(a + "是正数");
        }else if(a<0){
            System.out.println(a + "是负数");
        }else{
            System.out.println(a + "是零");
        }

2、switch

switch也是判断语句,与if判断的区别就是:if更偏向用范围型,而switch偏向用于几种情况

格式:

    switch(变量) {
        case 值1:
        语句体1;
        break;
        
        case 值2:
        语句体2;
        break;
        …
        default:	
        语句体n+1;
        [break;]
    }

switch中,变量的数据类型只能放6种:byte,short,int,char,String,枚举

还要注意,在每个case后面都要加一个break,用来跳出判断,如果没有break,则会造成穿透,程序就不会判断,直接执行下面的代码,直到遇见break为止

6、循环

1、for循环

格式:

    for(初始化语句;条件判断语句;条件控制语句){
        循环体语句;
        可以写任意行;
    }

执行流程:    初始化语句-->条件判断语句-->循环体语句-->条件控制语句
                                                        -->条件判断语句-->循环体语句-->条件控制语句
                                                                -->条件判断语句-->循环体语句-->条件控制语句

        for(int i=0;i<10;i++){  // 0 1 2 3 4   5 6 7 8 9
            System.out.println("to be No.1");
        }

2、while循环

格式:

    初始化语句;
    while(条件判断语句){
          循环体语句;
          条件控制语句;
    }
        int i=1;
        while(i<=5){
            System.out.println(i);
            i++;
        }

while循环有个常用的死循环格式:

	while(true){
        
	}

3、do...while循环

格式:

	 初始化语句;
     do { 
           循环体语句;
           条件控制语句;
     } while(条件判断语句);

do...while循环一般是不用的,了解就行

三种循环的区别:

for:适合用于明确循环次数的情况

while:适合用于不明确循环次数的情况

do...while:先循环再判断(基本没用)

4、循环跳转语句

break用在循环中,基于条件控制,终止循环体内容的执行,也就是说结束当前的整个循环
contiune用在循环中,基于条件控制,跳过某次循环体内容的执行,继续下一次的执行

5、循环嵌套

指的就是:在循环中再加入循环,下面列举一个我在刚接触嵌套时,难住我的一个例题:

题目:判断101-200之间有多少个素数,并输出所有素数。
    public static void main(String[] args) {
        for (int i = 101; i <201; i++) {
            int count=0;

            for (int j = 2; j <i; j++) {
                if (i%j==0){
                    count++;
                }
            }
            if (count==0){
                System.out.println("素数是:"+i);
            }
        }
    }

首先,素数是指,只能被1和它本身整除,除此之外如果还有能够整数这个数的数,那么这个数就不是素数,所以判断他是不是素数,可以让他除以从2到它本身之前的数

所以外循环定义题目中的范围,也就是101——200

内循环定义要除的数,也就是从2到变量i前面的数,也就是i-1

我做的过程中犯的错误:

1、if判断那里:当i%j==0的时候,也就是说它还有别的整数能整除他,所以它不是素数,但是接下来是不能写else的,因为循环还没除完,不能说他就是素数了

2、count写在了循环外面,这样会导致:在输出第一个素数之后,count就不可能再会是0了

7、Random随机数

可以获取一个随机生成的数字

它与Scanner一样,都需要先导包才能使用

1.导包
	import java.util.Random;
	
2.创建对象
	Random r = new Random();
	
3.生成随机数
	int i = r.nextInt(数字);

这个数字,输入多少,就表示0-该数字的范围内取一个数,比如我输入10,那么就会取0-9范围内的数字

如果要从一个范围到一个范围取数,例如我想取n-m之间的某个数,那么格式为:

int   i   =   r . nextInt(m-n+1)+n; 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值