首页 > 编程语言 >【Java查漏补缺(一)】数组与循环

【Java查漏补缺(一)】数组与循环

时间:2023-06-08 23:01:17浏览次数:43  
标签:查漏 Java int System 数组 补缺 println array out


除了数组与循环,还有方法,讲究看吧!后续练习内容都是连贯的!

Basical Java

看下Java中的变量类型吧!

数据类型关键字内存占用二进制位数
字节型 byte 1个字节 4位
短整型 short 2个字节 8位
整型 int(常用) 4个字节 32位
长整型 long 8个字节 64位
单精度浮点数 float 4个字节 32位
双精度浮点数 double(常用) 8个字节 64位
字符型 char 2个字节 8位
布尔类型 boolean 1个字节 4位

输入和输出

正常的输入和输出没什么好说的。看看下面这句

System.out.println(5 + 5 + "hello" + 5 + 5);

最终的结果是什么?10hello55

java中任意数据和字符串拼接结果一定是个字符串

变量定义

变量的定义方式

有两种定义方式:玩了这么久的Java,才知道这玩意叫语法糖。

//语法糖方式定义
int a = 1;

// 先声明,后赋值,再使用
int b;
b = 1;

还有嗷,单精度浮点数和长整型数定义的时候要加F(大小写均可)/L(大小写均可)。

类型转换

分为显式类型转换(也叫强转-会损失精度)和隐式类型转换。

  • 1,隐式(小的范围赋值给大的,如int赋值给long

  • 2,显式(大的范围赋值给小的损失精度*

他们两个之间的区别就是计算会不会丢失精度。(强转会丢失精度-大容器放到小容器中)

范围由小到大byte -> short, char -> int -> long -> float -> double boolean不参与**.

int e = 100;
long f = e ;  // 隐式类型转化(不会损失精度
System.out.println(f);
float g = 109.3F;
int h = (int) g;  // 显式类型转换(强制转换会损失精度
System.out.println(h);

ASCII码表

a - 97

A - 65

0 - 48

System.out.println('a' + 0);
System.out.println('A' + 0);
System.out.println('0');

运算符优先级及三元运算符

// 运算符优先级(从后往前执行)
int i = 10;
int j = i++ + --i + ++i;  // 从后往前 10+10+11
System.out.println(i);
System.out.println("算术运算符执行顺序测试结果为:" + j);
//三元运算符
int k = 5 < 3 ? 10 : 18;
System.out.println("三元运算符输出:" + k);

条件判断语句

if - else if 语句

public class Demo02_Mulit_If {
   public static void main(String[] args) {
       System.out.print("请输入您的年龄:");
       Scanner sc = new Scanner(System.in);
       int age = sc.nextInt();
       if (age >= 3 && age <= 5){
           System.out.println("可以上幼儿园了!");
      } else if (age >=6 && age <=12) {
           System.out.println("可以上小学了!");
      }else if (age >= 13 && age <= 15){
           System.out.println("可以上中学了!");
      }else {
           System.out.println("没有这样的学校!");
      }
  }
}

switch判断语句

public class Demo03_Switch {
   public static void main(String[] args) {
       //case 穿透好不好?看情况
       // switch中可以放什么?byte,short,char,int,枚举,String
       int month = 10;
       switch (month){
           case 12:
           case 1:
           case 2:
               System.out.println("冬季");
               break;
           case 3:
           case 4:
           case 5:
               System.out.println("春季");
               break;
           case 6:
           case 7:
           case 8:
               System.out.println("夏季");
               break;
           case 9:
           case 10:
           case 11:
               System.out.println("秋季");
               break;
           default:
               System.out.println("没有这样的季节!");
      }
  }
}

for循环与while循环

这里说下死循环的3种实现方式:while(true),for(;true;),for(;;)

还有for循环的快捷键 itar (iterator)

手写冒泡排序-这算是写穿了的一个循环吧

冒泡排序

 int[] array = {1, 2, 32, 45, 9, 3};  // 定义数组,静态初始化
//             0 1   2   3 4 5
for (int i = 0; i < array.length - 1; i++) {
    // 这里是0,length - 1
    for (int j = 0; j < array.length - i - 1; j++) {
        // 这里是 0, length -i -1
        // 前一个大于后面的一个就交换(到后面,说明元素是由小到大排列的
        if (array[j] > array[j + 1]) {
            int temp = array[j];
            array[j] = array[j + 1];
            array[j + 1] = temp;
        }
    }
}
// 循环遍历数组
for (int i = 0; i < array.length; i++) {
    System.out.print(array[i] + ",");
}

for循环打印99乘法表

//演示循环嵌套打印9*9乘法表
for (int i = 1; i <= 9; i++) {
   // 1*1 1*2 .. 1*9
   for (int j = 1; j <= i; j++) {
       System.out.println(i + "*" + j + "=" + (i*j));
  }
   System.out.println();
}

Scanner详解

步骤:

  1. 导包. import java.util.Scanner;

  2. 创建对象. Scanner sc = new Scanner(System.in);

  3. 调用方法. int num = sc.nextInt();

获取字符串类型用.next()方法

获取int类型用.nextInt()方法

获取字符类型用.nextChar()方法

//Scanner 案例(判断三个小和尚最高身高
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个和尚的身高: ");
int h1 = sc.nextInt();
System.out.println("请输入第二个和尚的身高: ");
int h2 = sc.nextInt();
System.out.println("请输入第三个和尚的身高: ");
int h3 = sc.nextInt();

经典案例Scanner结合三元运算符

// 第一种写法
/*
int temp = h1 > h2 ? h1: h2;
int result = h2 > h3 ? h2: h3;
*/
int result = h1 > h2 ? (h1 > h3 ? h1 : h3): (h2 > h3 ? h2: h3);  // 通常情况可以去掉括号
System.out.println("最高身高的和尚为:"+ result);

数组

数组的两种初始化方式:动态初始化静态初始化

  • 动态初始化,指定长度,系统给定默认值

  • 静态初始化,给出初始值,系统决定长度

// 数组定义方式-动态初始化,静态初始化
// 动态初始化,指定长度,系统给定默认值
//默认值:int -> 0, double -> 0.0, boolean -> false, String -> null
int[] arr = new int[3];  // 推荐使用,掌握
// 另一种定义方式
int arr1[] = new int[3];  // new 代表去堆内存中开辟空间
// 静态初始化,给出初始值,系统决定长度
int[] array = {13, 32, 5, 56};  // 推荐使用,掌握
int[] array1 = new int[]{12, 32, 43};

数组的基操

获取数组长度

打印数组最大索引

打印数组元素的地址值

// 数组的基本操作
// 定义一个三个元素的数组
int[] array3 = new int[3];
System.out.println(array3[1]);
array3[1] = 10;
System.out.println(array3[1]);
// 打印数组长度
System.out.println(array3.length);
// 打印数组最大索引
System.out.println(array3.length - 1);
// 打印数组元素的地址值
System.out.println(array3);

关于数组遇到的两个问题 NullPointerException,ArrayIndexOutOfBoundsException

NullPointerException — 数组为空

ArrayIndexOutOfBoundsException — 数组元素不存在

int[] array4 = new int[4];
array4 = null;
int[] array5 = new int[5];
// NullPointerException数组为空
try {
   System.out.println(array4[0]);
}catch (Exception e) {
   System.out.println(e);
}
// ArrayIndexOutOfBoundsException数组元素不存在
try {
   System.out.println(array5[5]);
}catch (Exception e){
   System.out.println(e);
}

遍历数组&数组求最值

// 遍历数组
int[] arrx = {11, 22, 33, 44, 55};
// iterator array -> itar(快捷键
for (int i = 0; i < arrx.length; i++) {
   System.out.print(arrx[i] + "\t");
}
System.out.println();
//获取数组元素的最值
int[] arry = {5, 15, 2000, 10000, 100, 4000};
int max = arry[0];
for (int i = 0; i < arry.length; i++) {
   if (max < arry[i]){
       max = arry[i];
  }
}
System.out.println("数组最值是: " + max);

方法Method

跟Python中的def 函数名(): 这种函数差不多

把具有独立功能的代码整合到一起, 使其成为具有特殊功能的代码集.

方法的好处: 提高代码的 复用性.

方法的格式

修饰符  返回值的数据类型  方法名(数据类型 参数名1, 数据类型 参数名2) {
      方法体;
return 具体的返回值;
}
格式解释:
   修饰符:             目前理解为固定格式   public static
   返回值的数据类型:     指的是方法执行完毕后, 返回什么类型的结果, 如果明确知道方法没有具体的返回值, 则返回值类型必须写成void
   方法名:             就是方法的名字, 要符合小驼峰命名法, 方便我们调用的.
   参数列表:           简称形参, 指的是调用方法需要传入什么类型的值.
   方法体:             就是以前的逻辑代码(if, for...), 用来完成某些功能的.
   return:            主要作用是用来结束方法的, 捎带着可以返回方法的执行结果.

注意事项

注意事项: 1. 方法与方法之间是平级关系, 不能嵌套定义. 2. 方法只有被调用才会执行. 3. 定义方法时候, 写的参数列表叫: 形参, 指的是调用方法需要传入什么类型的值. 4. 调用方法的时候, 传入的参数叫: 实参, 指的是实际参与运算的数值.

  1. 方法的功能越单一越好, 最好一个方法就做一件事儿.

public class Methods {
    public static void main(String[] args) {
        // 需求1: 定义方法, 计算两个整数的和.
        // 需求2: 方法版的遍历数组
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个整数");
        int a = sc.nextInt();
        System.out.println("请输入第二个整数");
        int b = sc.nextInt();
        int result = getSum(a,b);
        System.out.println("两个数的和为:" + result);
        int[] arr = {12, 32, 33, 99};  // 定义数组
        printArray(arr);
    }

    /**
     * 这是一个文档注释
     * @param a 要计算的第一个整数
     * @param b 要计算的第二个整数
     * @return 方法 的返回值(求和结果
     */
    public static int getSum(int a, int b){
        // 定义方法, 计算两个整数的和.
        int result = a + b;
        return result;
    }
    public static void printArray(int[] array){
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);

        }
    }
}

标签:查漏,Java,int,System,数组,补缺,println,array,out
From: https://www.cnblogs.com/liam-sliversucks/p/17467922.html

相关文章

  • Java_Collections.EMPTY_LIST
     1.背景在某些情况下,我们经常需要发挥一个空的集合对象,比如说在数据查询时,并不需要发挥一个NULL或是异常,那么就可以返回一个空的集合对象。如果你想new一个空的List,而这个List以后也不会再添加元素,那么就用Collections#emptyList()好了。newArrayList()或者newLinked......
  • Java_Timer
     Java_Timer ava.util.Timer是一个实用工具类,该类用来调度一个线程,使它可以在将来某一时刻执行。Java的Timer类可以调度一个任务运行一次,或定期运行。 java.util.TimerTask是一个抽象类,它实现了Runnable接口。我们需要扩展该类以便创建自己的TimerTask,这个TimerTask内部使用jav......
  • 02-前端-javaScript
    文章目录JavaScript1,JavaScript简介2,JavaScript引入方式2.1内部脚本2.2外部脚本3,JavaScript基础语法3.1书写语法3.2输出语句3.3变量3.3.1全局变量var3.3.2局部变量let3.3.3常量const3.4数据类型3.5运算符3.5.1\==和===区别▲3.5.2类型转换3.6流程控制语句3.6.1if......
  • javaWeb核心02-Request&Response -(乱码处理、字符流、字节流、虚拟目录、请求转发、重
    文章目录Request&Response1,Request和Response的概述2,Request对象2.1Request继承体系2.2Request获取请求数据2.2.1获取请求行数据2.2.2获取请求头数据2.2.3获取请求体数据2.2.4获取请求参数的通用方式基于上述理论,request对象为我们提供了如下方法:★代码演示2.3IDEA快速创......
  • Java数据类型、数组
    Java数据类型基本数据类型(8种)byte\short\int\long\;float\double;char\boolean引用数据类型类、数组、接口、枚举、注解、记录一维数组packagecom.study.onearray;publicclassOneArrayTest01{//快捷方式:psvm+回车,快速生成main方法......
  • 讲真,这三道Java入门级面试题,你也不一定能搞定
    下面是一道入门级面试题,这道题基本上都是问初级的小伙伴比较多,但如果你是中级,或者高级。我觉得未必都能回答上来。说说Java语言有哪些特点尽量答出以下几个关键词:1)简单易学。Java有丰富的类库,能够通过静态方法封装,降低API的学习成本,提高工作效率。2)面向对象。这个也是Java最重要的......
  • 给小白讲java中两大怪物,附带面试题!
    类介绍Java程序是由若干个类组成的,类也是面向对象编程思想的具体实现。以下为类的定义:publicclassUser{//私有属性privateLonguserId;privateStringname;privateIntegerage;//构造方法publicUser(){}//有残构造方法publ......
  • 如何吃透一个Java项目?
    现在Austin的文档我觉得还是比较全的,但到了看代码的时候,可能有的同学就不知道应该怎么看,有想知道模块之间的调用链路,有想一点一点把细节给全看了。这时候就很可能在项目里犯迷糊了,绕不出不来了。Java开源项目消息推送平台......
  • Java 的 8 种异步实现方式
    异步的八种实现方式线程ThreadFuture异步框架CompletableFutureSpring注解@AsyncSpringApplicationEvent事件消息队列第三方异步框架,比如Hutool的ThreadUtilGuava异步1.线程异步public class AsyncThread extends Thread {    @Override    public vo......
  • Java反射机制详解上篇
    1反射机制是什么反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。在面向对象的世界里,万事万物皆对象.在java语言里,静态的成员,普......