Java学习(二)

Java学习(二)

流程控制

用户交互对象(Scanner)

标准格式:hasNext()——next()和 hasNextLine()——nextLine()

  • next(): 1.一定要得到有效字符后才能结束

    2.在输入有效字符之前的空格或空白,next()会自动将其去掉

    3.对输入有效字符后,后面输入的空格将作为分隔符或结束符

    4.next()不能得到带有空格的字符串

System.out.println("请输入");
       //创建Scanner对象
       Scanner scanner new Scanner(System.in);   //输入hello world
       //判断Scanner是否还没输完
       if (scanner.hasNext()){
           //把输入的结果赋给next
           String next scanner.next();     //hello
           //打印出next
           System.out.println(next);       //hello
      }
scanner.close;
  • nextLine():1.以enter作为结束符,可以得倒enter前的所有字符

    2.可以获得空白

    System.out.println("请输入");
           //创建Scanner对象
           Scanner scanner new Scanner(System.in);   //输入hello world
           //判断Scanner是否还没输完
           if (scanner.hasNextLine()){
               //把输入的结果赋给next
               String nextLine scanner.nextLine();     //hello world
               //打印出nextLine
               System.out.println(nextLine);       //hello world
          }
    scanner.close;

注:hasNext这个判断可以没有,但以下部分必须有

Scanner scanner new Scanner(System.in);    //开始
String nextLine scanner.nextLine();
scanner.close;                              //结尾

 

方法

设计方法原则

  • 一个方法,完成一个功能

  • 方法包含于类或对象之中

  • 类似于其他语言的函数

方法的定义

  • 由方法头和方法体组成

  • 格式: 修饰符 返回值类型 方法名(参数类型 参数名){}

public static int max(int a,int b)

方法的调用

  • 静态方法:可以通过 类名.方法名 调用

  • 非静态方法:只能通过实例化一个该类的对象,通过对象来调用该方法

方法的重载

  • 重载:就是在一个类中具有相同的函数名,但是形参不同

  • 重载的原则:(1)方法名必须相同

    (2)参数列表不同(个数不同或类型不同、参数排列的顺序不同等)

    (3)方法返回的类型可以相同也可以不同

    (4)仅仅返回类型不同不足以成为方法的重载

可变参数

  • java支持传递同类型的可变参数

  • 可变参数实际上就是一个数组,如下面的b,可以用b[1]来调用第二个输入的

  • 它在方发声明中,在指定参数类型后加一个省略号(...)

  • 在一个方法中只能指定一个可变参数,它必须是方法的最后一个参数,任何普通参数必须在它之前声明

public static void add(int a,double ...b){
  }

 

 

数组

数组声明

  • 格式:datatype[] 数组名;(推荐)

    datatype 数组名[];

  • 使用new关键字来新建数组

    datatype[] 数组名 = new datatype(arraysize);
  • 获取数组的长度就是通过:数组名.length

       int[] a;
       a=new int[10];
       for (int 0; a.length; i++) {
           a[i] i;
           System.out.println(a[i]);
      }

 

数组的初始化

  • 静态初始化:创建就赋值 int[] a = {1,23,4,56,7};

  • 动态初始化:手动赋值 int[] b = new int[10];

 

数组的特点

  • 长度是确定的,若出现下标越界,则会报数组小标越界异常。 ArrayIndexOutOfBoundsException

  • 数组中是相同类型元素

  • 数组元素可以是任何类型(包括基本类型和引用类型)

  • 数组本身就是对象,数组对象本身就在堆中,数组元素本身就相当于成员变量

数组的使用

  • 普通for循环遍历

for (int 0; a.length; i++) {
           a[i] i;
           System.out.println(a[i]);
      }
  • 增强for循环 for(数据类型 变量名:遍历的对象)。 增强for通常用于遍历对象,不方便操作取下标

for (int i : a) {
System.out.println(i);
}

二维数组

  • 和一维数组类似 只不过是嵌套而已

  • 二维数组在内存中是以行优先

				//[3][2]
int[][] a={{1,2},{2,4},{3,5}};
int[][] b=new int[3][2];
for (int i = 0; i <3; i++) {
for (int j = 0; j < 2; j++) {
b[i][j] = i;
}
}

冒泡排序案例

public class BubbleSort {
public static void main(String[] args) {
int[] a = {1,3,4,2,8,10,5};
int[] sort = sort(a);
//用的Arrys里的toString方法
System.out.println(Arrays.toString(sort));
}

public static int[] sort(int[] array){
//外层判断需要走多少次
for (int i = 0; i < array.length-1; i++) {
int temp = 0;
//内层判断比较两个数
for (int j = 0; j < array.length-1-i; j++) {
if (array[j]>array[j+1]){
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
return array;
}
}

 

 

posted @ 2022-01-12 15:42  Zquen  阅读(31)  评论(0)    收藏  举报