Scanner
java.util.Scanner;获取用户的输入。
hasnext,hasnextline,next(不能得到空格),nextline
import java.util.Scanner;
public class demo {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
if(s.hasNext()){
String str = s.next();
System.out.println(str);
}
s.close();
}
}
hasnextint()
nextint()
结构
if else for (;😉
while do while
switch() case a: default:
break continue
打印三角形 1,3,5,7,9
方法
System.out.println()
System是一个类,out是一个对象,println是一个方法
方法是语句的集合,它们组合用来执行功能(main方法由电脑来管)
- 方法是解决一类问题的步骤的有序组合
- 方法包含于类或对象中
- 方法在程序中被创建,在其他地方被引用
public class demo {
public static int addx(int x,int y){ //不能直接写public int,而是 public static int
return x+y; //这是static 类方法,不用对象前,有利于调用
}
public static void main(String[] args) {
int a = 1, b=2,c;
c = addx(a,b); //这样才能引用
System.out.println(c);
}
}
方法的定义
修饰符 返回值类型 方法名 (参数类型 参数名){}
参数:形参,实参(类似于c++)
java是值传递,而不是引用传递(c有的是值传递,有的是引用传递)
方法的重载
在一个类中,有相同的名称,但参数不同,返回值类型也不同
- 方法名相同
- 参数列表不同
- 仅仅返回值类型不同不可以重载
编译器会根据参数列表一个一个的匹配
命令行传参
传递命令行参数给main, 就是那个 args[]
javac Demo.java
java Demo.java
cd…/cd…/cd…/
java com.dai.method.Demo
this is dai
args = this is dai
可变参数
在方法声明中,在指定参数类型后加一个省略号
public class demo01 {
public static void main(String[] args) {
demo01 demo = new demo01(); //第二种方法,传递方法
demo.printMax(1,2,3,4,5);
}
public static void printMax(int... i){
int result = 0;
for(int j =0 ; j<i.length ; j++){
if(i[j]>result) result = i[j];
}
System.out.println(result);
}
}
数组
内存分析:堆,栈,方法区
堆:存放new的对象和数组
栈:存放基本变量类型
静待初始化:int[] a={1,2,3…}
动态初始化:int[] b=new int[10]
注意:
数组各单位元素被隐式初始化为0
数组本身就是对象,对象存放在堆中
ArrayIndexOutOfBoundsException:下标越界
数组的使用
arrays.for for(int array : arrays) 无下标
int[] arrays ,作为参数
返回值 array
多维数组
Arrays类
java.util.Arrays 先看源码,左边structures看方法
方法自己看
稀疏数组
大部分元素为同一个值
行,列,值
int[][] array2 = new int [sum+1][3];
//然后转换