格式:
public static void 方法名(形式参数列表){
//完成的业务逻辑,输出等等操作,
但是不能有return (必须和有具体返回值类型的方法一块使用)
}
方法调用:
输出调用 -----用不了
赋值调用 -----用不了
单独调用 -----推荐
import java.util.Scanner ;
class Test{
public static void main(String[] args){
//创建键盘录入对象
Scanner sc = new Scanner(System.in) ;
//提示并录入数据
System.out.println("请你输入行数:") ;
int m = sc.nextInt() ;
System.out.println("请你输入列数:") ;
int n = sc.nextInt() ;
//调用
printXing(m,n) ;
System.out.println("----------------------------------------") ;
//键盘录入一个数据n,打印nn乘法表出来! 使用方法调用
System.out.println("请您输入一个数据:") ;
int p = sc.nextInt() ;
pintPP(p) ;
}
public static void pintPP(int p){ //形式参数
//为了保证有数据从1开始
for(int x=1 ; x <=p ; x ++ ){
for(int y = 1 ; y<= x ; y ++){
System.out.print(y+"*"+x+"="+(y*x) +"t") ;
}
System.out.println() ;
}
}
public static void printXing(int i,int j){ //i,行,j,列
for(int x = 0 ; x < i ; x++){
for(int y = 0; y < j ; y ++){
System.out.print("*") ;
}
System.out.println() ;
}
}
}
2.数组
数组:
就是能够存储同一种数据类型的容器,必须满足里面的元素是同一种类型的元素
数组的定义格式
1)数据类型[] 数组名称; (推荐第一种方式)
2)数据类型 数组名称[] ;
数组的初始化有两种方式:
第一种方式:动态初始化
第二种方式:静态初始化
动态初始化:
我们给定数组的长度,数组的元素内容由系统默认初始化!
默认初始化:
系统给定的
根据我们数组中存储的数据类型来判定
2.1动态初始化
格式:
数据类型[] 数组名称 = new 数据类型[数组长度] ; (推荐)
数据类型 数组名称[] = new 数据类型[数组长度] ;
2.2静态初始化
格式:
数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,元素3....} ;-----推荐
数据类型 数组名称[] = new 数据类型[]{元素1,元素2,元素3....} ;
简化格式:
数据类型[] 数组名称 = {元素1,元素2,元素3....} ;
数据类型 数组名称[] = {元素1,元素2,元素3....} ;
注意:
创建数组的时候,不能既动态初始化了,还静态初始化了
2.3数据中常见的异常
1)数组角标越界异常---程序运行的时候出现异常
(ArrayIndeexOutOfBoundsException)
原因:访问了数组中不存在的索引值报错!
解决:改变索引值
2)空指针异常 NullPointerException
原因:访问某个对象的时候,对象已经是null,然后还要使用 对象中的某个功能
解决:对当前这个对象进行非空判断
2.4数组的应用---遍历数组
遍历数组:就是将数组中的元素一一输出
class Text1{
public static void main(String[] agrs){
int[] arr = {11,22,33,44,55,66};
printArray(arr) ;
}
public static void printArray(int[] array){
for(int x = 0 ; x < array.length ; x ++){
System.out.println(array[x]) ;
}
}
}
3. Java中的内存分配
栈内存:
局部变量:在方法中定义中或者是方法生命上的变量
特点:先进先出
堆内存:
new出来的东西(创建对象)
方法区:
class:字节码文件区域
static:静态的东西
字符串常量
寄存区:
和cpu有关
本地方法区:
和系统有关


