Java基础知识随笔

Java基础知识

初识Java

  1. Java是高级编程语言, 是面向对象的, 静态的编程语言

  2. Java中包含JDK、JRE、JVM。其中JVM是Java虚拟机。 JRE是运行环境。JDK是开发工具包

  3. Java的程序结构。 总共三步。编写源代码,编译,运行

    public class Demo{
    	public static void main(String args[]){
    		System.out.println("Helloworld");
    	}
    }
    

变量和数据类型

类型名字所占字节
byte字节整型1
short短整型2
int整型4
long长整型8
float单精度浮点数4
double双精度浮点数8
boolean布尔1
char字符2

不同的字节代表着所占空间的不同,那么所能表示的数据长度不同。 一般来讲,整型都是用int,小数则用double。是用float的时候需要加上f。因为默认都是double类型。 使用long需要加上l。因为默认都是int类型

public class Demo{
	public static void main(String args[]){
		byte a = 100;
    short c = 20; 
    int b  = 10;
    long d = 10000;
    float e = 10.0f;
		double 	r = 20.0;
    
	}
}

控制台的输入与输出

  1. 是什么

    1. 是用来接收用户通过键盘输入的数据,存放在变量中的。
  2. 为什么要用

    1. 为了接收用户给的数据,一般来说,比如注册表单(你的账号密码需要你来输入)。(当然,注册表单我们是网页吧)。
  3. 什么时候用

    1. 同上
  4. 怎么用

    1. 导入包 import java.util.Scanner;
    2. 创建Scanner对象 Scanner scan = new Scanner();
    3. 通过scan来调用他的方法接收数据。
    import java.util.Scanner;
    
    public class Demo1 {
        public static void main(String[] args) {
            // 比如我这个系统需要让用户注册
            // 让用户注册, 就需要用户来填写他的信息。 
            // 比如有账号,密码,确认密码。
            // 一般账号和密码都是英文加数字, 也是字符串类型
            Scanner scan = new Scanner(System.in);
            System.out.println("请输入你喜欢的账号名");
            String username = scan.next();
            System.out.println("请输入你的密码");
            String password = scan.next();
            System.out.println("请确认你的密码");
            String rePass = scan.next();
            if(password.equals(rePass)){
                System.out.println("注册成功,你的账号是:"+username+"你的密码是"+password);
            }else {
                System.out.println("你的两次密码不相同请重新输入");
            }
        }
    }
    

数据的运算

  • 运算符,顾名思义就是用于计算的符号。
  • Java 语言中的运算符
  • 按功能分为:赋值运算符、算术运算符、关系运算符和逻辑运算符
  • 按操作数的个数分类:单目运算符、双目运算符、三目运算符

单目运算符

  1. 赋值运算符 =

    int num = 10 ; 他是单目的。

双目运算符

  1. 算术运算符

    运算符功能示例
    +加法运算表达式1+2计算结果为3
    -减法运算表达式2-1计算结果为1
    *乘法运算表达式2*2计算结果为4
    /除法运算表达式4/2计算结果为2
    %模运算表达式5%2计算结果为1
int num = 10+2;
int num2 = 10*2 ; 

在算术运算符中, 一个符号(±*/)都需要有两个数字参数,这个叫双目

  1. 复合运算

    public class Demo2 {
        public static void main(String[] args) {
            int a = 10 ;
             // ++在后面, 先使用再运算
             // ++在前面, 先运算再使用
            System.out.println(a++); //10
            System.out.println(a); // 11
            System.out.println(a++); // 11
            System.out.println(a); //12
            System.out.println(++a);//13
         }
    }
    
  2. 关系运算符

    1. 关系运算符用于比较两个变量或表达式的值的大小关系
    2. 在Java 中,关系运算结果值为boolean 类型,包括“true”或“false”
运算符功能示例
>比较大于关系表达式2>1 计算结果为“True”
<比较小于关系表达式2<1 计算结果为“False”
>=比较大于等于关系表达式2>=1 计算结果为“True”
<=比较小于等于关系表达式2<=1 计算结果为“False”
==比较相等关系表达式2==1 计算结果为“False”
!=比较不相等关系表达式2!=1 计算结果为“True”
int a =10 ; 
int b = 10 ; 
boolean check = a>b; // false
int c =20 ; 
int d = 30;
boolean check1 = a<d; //true
boolean check2 = a==b ;// true

  1. 逻辑运算符

    使用关系运算符可以比较程序中两个值的大小关系,但在程序中经常需要从多个比较关系中得到综合判断的结果。

运算符功能示例
&&与运算,即同时成立,缺一不可a>b&&c>d:只有左右两个表达式的值都为true, 整个结果才为True。只要有一个表达式为false,则整个表达式为False
||或运算, 即两者中有一个成立即可a>b||c>d:左右两个表达式中只要有一个成立就为true,只有两个都为false才为false
!非运算,取反!(a>b):如果表达式a>b 为false,则进行取反运算后为true;如果表达式a>b为true,则进行取反运算后为false

三目运算符

语法:布尔表达式?表达式1:表达式2

public class Demo5 {
    public static void main(String[] args) {
        int age = 16;
        System.out.println(age>18?"成年":"未成年");
    }
}

运算符的优先级

有算数运算的, 先算术运算 。再其次是逻辑运算。

比方说: 5+10>10+5? // 我总要先把我的数字先算出来,然后才能开始比较啊。

优先级运算符结合性
1()从左到右
2!、++、–从右到左
3* 、/、 %从左到右
4+ 、-从左到右
5> 、<、 >=、 <=从左到右
6==、 !=从左到右
7&&从左到右
8||从左到右
9= 、+=、 -=、 *=、 /=、 %=从右到左

Java中的条件结构

我们之前写的代码都是顺序结构, 顺序执行下来的。

  • 选择结构又称为分支结构。
  • 当程序执行到分支判断的语句时,首先判断条件,然后根据条件表达式的结果选择相应的语句执行。
  • 分支结构包括单分支、双分支和多分支三种形式。
  • if(boolean){代码块}
  1. 单分支

    import java.util.Scanner;
    
    public class Demo6 {
        public static void main(String[] args) {
            // 我们需要判断用户输入的年龄,判断他是否成年
            Scanner scan = new Scanner(System.in);
            System.out.println("请输入你的年龄");
            int age = scan.nextInt();
            if(age>18){
                System.out.println("恭喜你成年了。 ");
            }
        }
    }
    
    
    1. 双分支
    import java.util.Scanner;
    
    public class Demo6 {
        public static void main(String[] args) {
            // 我们需要判断用户输入的年龄,判断他是否成年
            Scanner scan = new Scanner(System.in);
            System.out.println("请输入你的年龄");
            int age = scan.nextInt();
            boolean b = age>18;
            if(b){
                System.out.println("恭喜你成年了。 ");
            }else{
                System.out.println("不好意思, 你还没成年");
            }
        }
    }
    
    
    1. 多分支

      import java.util.Scanner;
      
      public class Demo7 {
          public static void main(String[] args) {
              // 多分支
              // 我们需要根据年龄不同,判断他所在的年纪
              // 三十而立,四十不惑,五十知天命,六十耳顺 七十随心所欲 不逾矩
              // 阎王收人,不是73就是84
              // 袁世凯要推翻帝制,帝制最大的掌权人,慈禧。72。
              Scanner scanner = new Scanner(System.in);
              System.out.println("请输入你现在的年龄");
              int age = scanner.nextInt();
              if(age<30){
                  System.out.println("好好读书");
              }else if(age>=30&&age<40){ // 这个年纪是而立之年
                  System.out.println("而立了");
              }else if(age>=40&&age<50){
                  System.out.println("不惑了");
              }else if(age>=50&&age<60){
                  System.out.println("知天命");
              }else if(age>=60&&age<70){
                  System.out.println("耳顺");
              }else{
                  System.out.println("随心所欲不逾矩");
              }
      
          }
      }
      
    2. 嵌套if

      import java.util.Scanner;
      
      public class Demo7 {
          public static void main(String[] args) {
              // 多分支
              // 我们需要根据年龄不同,判断他所在的年纪
              // 三十而立,四十不惑,五十知天命,六十耳顺 七十随心所欲 不逾矩
              // 阎王收人,不是73就是84
              // 袁世凯要推翻帝制,帝制最大的掌权人,慈禧。72
              Scanner scanner = new Scanner(System.in);
              System.out.println("请输入你现在的年龄");
              int age = scanner.nextInt();
              if(age>0){
                  if(age<30){
                      System.out.println("好好读书");
                  }else if(age>=30&&age<40){ // 这个年纪是而立之年
                      System.out.println("而立了");
                  }else if(age>=40&&age<50){
                      System.out.println("不惑了");
                  }else if(age>=50&&age<60){
                      System.out.println("知天命");
                  }else if(age>=60&&age<70){
                      System.out.println("耳顺");
                  }else{
                      System.out.println("随心所欲不逾矩");
                  }
              }else{
                  System.out.println("小于0是什么鬼");
              }
      
          }
      }
      

    switch-case

    public class Demo8 {
    
            public static void main(String[] args) {
               // switch casse
                // 比如说你现在要打客服电话
                // 电话账单问题请按1,套餐问题请按2 , 人工服务请按0
                Scanner scanner = new Scanner(System.in);
                System.out.println("请输入你要咨询的服务号");
                int num = scanner.nextInt();
               switch (num){
                   case 1 :
                       System.out.println("电话账单问题");
                       break;
                   case 2:
                       System.out.println("套餐问题");
                       break;
                   case 0:
                       System.out.println("人工服务");
                       break;
                   default:
                       System.out.println("您输入的数字有误");
    
               }
            }
    }
    

Java中的循环结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l73w0OtD-1640370412830)(/Users/chenxt/Pictures/typora/image-20211225004229987.png)]

比如: 我们需要打印10000张纸。那我们的代码难道要写一万次吗,所以我们需要用到循环

System.out.println("打印");
System.out.println("打印");
System.out.println("打印");
System.out.println("打印");
。。。

while

while(boolean){
	代码块
}
public class Demo9 {
    public static void main(String[] args) {
        System.out.println("打印一万张纸");
        // 在外面声明一个int i = 0 ;
        int i = 1; //
        while (i<=10000){ // 如果说i还没到10000,那就需要继续打印。
            System.out.println("第"+i+"张纸");
            i++;
        }
    }
}

写循环的时候会出现一些错误。

错误一:循环一次也不执行
错误二:循环执行次数错误
错误三:死循环

do while

do while 和while 相比, 他最少会执行一次

public class Demo10 {
    public static void main(String[] args) {
        // 比如说游戏里面的抽奖, 第一次免费。 后面收费
        int i = 5;
        // 条件写死,他没有充钱, 只能抽1次
        do {
            System.out.println("抽了第"+i+"次");
            i--;
        }while (i>1);
    }
}

for

for(初始变量; 布尔条件;变量改变的量;){
	代码块
}

在这里插入图片描述

break和continue

break是跳出循环

 // break ;比如说我到第50的时候, 就要停止循环  
for (int i = 1 ;i<=10000;i++){
            System.out.println(i);
            if(i==50){
                break;
            }
        }

continu是跳过循环

  // continue  比如说我只取偶数
        // 也就是说,当我遇到偶数的时候, 我就不输出这个数字了
        for (int i = 0; i < 100; i++) {
            if(i%2!=0){
                continue;
            }
            System.out.println(i);
        }
    }

Java方法

  1. 方法的概述

  2. 方法的四种类型

    ​ 1. 无参数无返回值方法

public static void main(String[] args) {

    sayHello();
    sayHello();
    sayHello();
    sayHello();
}

// 无参数无返回值
public  static  void sayHello(){
    System.out.println("Hello");
}

​ 2. 有参数无返回值方法

 public static void main(String[] args) {

        // 方法是将一些重复的功能组合在一起, 以便反复调用
        // 比如说我需要一个能进行两个数相加的程序
       sum(10,2,10,10);
       sum(50,2,10,10);
       sum(100,100,10,10);
    }

    // 公开的  静态的  无返回值的  方法名   定义类型int a是参数,定义类型int b是参数
    public static  void      sum      (int a , int b , int c , int d ){
        int sum = a+b+c+d;
        System.out.println(sum);
    }

​ 3. 无参数有返回值方法

public static void main(String[] args) {
    String hello = hello();
    String hello1 = hello();
    String hello2 = hello();
    System.out.println(hello);
    System.out.println(hello1);
    System.out.println(hello2);
}

// 无参数但有返回值的
public static String hello(){
    return "hello";
}

​ 4. 有参数有返回值方法

 public static void main(String[] args) {
        int sum =  cheng(5,10);
        System.out.println(sum);

  }
  // 公开的  静态的  有返回值且类型有int  方法名   定义类型int a是参数,定义类型int b是参数
  public  static  int cheng (int  a , int b ){
      int sum = a*b;
     	return sum;
  }

方法的概述

在程序中包含比较复杂的逻辑和功能时,可以将这些功能分解为若干个子功能分别实现,而这些子功能组合在一起,便形成了完整的程序。

方法定义在类中,通过对象完成对它们的调用,最后组成整个程序。通俗的讲,程序就是各个对象对方法的调用。

数组

  1. 我一个变量是不是只能存一个数据,那么我有一组数据怎么办。
  2. 例如:班上4000位同学的分数, 我该怎么存。
	int xxz = 40;
	int lkd = 50;
	int lbh = 60;

  1. 那么这时候, 我们需要有一个数据类型来存放我们一堆的数据。 用了数组之后, 只需要一个变量名就行了。

开始使用

  1. 声明数组

    int[] nums ; 
    
  2. 创建数组

    nums = new int[5]; // new int[5] ,这个括号5,是规定数组的长度。也就是能存放数组里面元素的个数
    
  3. 初始化数组

    就是给数组赋值

    nums[0]  =5; 
    nums[1] = 4;
    nums[2] = 2;
    nums[3] = 1 ;
    nums[4] = 5;
    
  4. 数组的访问

        public static void main(String[] args) {
    				int[]nums ;
            nums = new int[5];
            nums[0]  =5;
            nums[1] = 4;
            nums[2] = 2;
            nums[3] = 1 ;
            nums[4] = 5;
            System.out.println(nums);
            System.out.println(nums[4]);
            System.out.println(nums[3]);
            System.out.println(nums[3]);
            System.out.println(nums[5]);// ArrayIndexOutOfBoundException 数组下标越界异常
          
        }
    

  1. 如何快速输出数组

    1. 通过for循环

      1.  for (int i = 0; i < nums.length; i++) {
                    int num = nums[i];
                    System.out.println(num);
                }
        
      2. // 增强for循环
                for (int i: nums) {
                    System.out.println(i);
                }
        
    2. 通过Arrays.toString(数组变量)

       String s = Arrays.toString(nums);
       System.out.println(s);
      
    3. 数组的创建方法总结

      1. 先声明后初始化

      1. 直接声明并初始化
       public static void main(String[] args) {
              int[] nums = new int[]{1,2,3,4,5};
              System.out.println(Arrays.toString(nums));
          }
      
      1. 直接初始化
      int[] nums = {1,2,3,4,5};
      

Java基础综合项目

实现猜字母

  1. 电脑会生成五个字符
  2. 用户也输入5个字符
  3. 将电脑的字符与用户输入的字符逐一比较判断
  4. 最后输出正确的个数
import java.util.Arrays;
import java.util.Scanner;

public class Demo17 {


    /**
     *  猜字符游戏
     *  电脑随机生成5个字符, 玩家输入5个字符后, 进行判断正确的个数
     *  写熟练后, 再继续修改
     *      1. 当前的判断逻辑是比如 电脑生成 mvaxz , 假如用户输入的是zxvma ,则对了5个,但位置都不对。
     *          所以需要修改能判断是否在正确位置上对的个数。
     *      2. 让电脑生成的字符不重复。
     * @param args
     */

    public static void main(String[] args) {

        // 电脑生成的方法
        char[] generate = generate();
        System.out.println("电脑输入的数字为:"+ Arrays.toString(generate));
        // 玩家输入的方法
        char[] inputs = input();
        // 比较的方法
        int check = check(generate,inputs);
        System.out.println("恭喜你,猜对"+check+"个");
    }
    // 用来进行判断的方法
    public static int check(char[] generate, char[] inputs) {
        int a = 0 ;
        for (int i = 0; i <generate.length ; i++) {
            for (int j = 0; j <inputs.length ; j++) {
                if(generate[i]==inputs[j]){
                    a++;
                    break;
                }
            }
        }
        return a;
    }

    // 用来接收用户输入的方法, 并将用户输入的字符返回给主方法
    public static char[] input() {
        Scanner scanner = new Scanner(System.in);
        String next = scanner.next();
        next = next.toLowerCase();
        char[] chars = next.toCharArray();
        return chars;
    }
    // 用来让电脑生成随机字符的方法
    public static char[] generate() {
        char[] chars = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
        char[] generate = new char[5];
        for (int i = 0; i < chars.length; i++) {
            if(i==5){
                break;
            }
            double random = Math.random();
            int a = (int)(random*26);
            generate[i] = chars[a];
        }
        return generate;
    }
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值