1.java 中一个数组只能存储一种数据类型。
一个数组内,数据类型都是相同的
2.数组也是一种数据类型,它本身是一种引用类型。
例:int[]
int[]是一种数据类型
3.java中定义数组的方式有以下两种
type[] arrayName;
type arrayName[];
推荐使用第一种,由第二点可知,type[]本身是一种独立的数据类型。用第一种方法定义更加的准确。
如果使用第二种方法,仿佛给人一种错误的感觉定义了一个type型的变量,这是不准确的
4.定义数组时不能指定数组的长度
5.数组初始化
数组初始化是为数值的数组元素分配内存空间,并为每个数组元素赋初值
注意分配了内存空间后必须赋初值
//静态初始化,常用的形式
int[] a = {1,2,3,4};
//
a = {1,2,3,4};
//动态初始化代码 标准格式
type[] arrayName = new type[length];
int[] a = new int[5];
6.所有的数组都会提供length(长度属性)
arrayname.length //数组名.length 得到数组的长度
7.foreach 循环 一种java中新加入的循环
在遍历数组和集合时非常的方便
无须获得数组和集合的长度
无须根据索引来访问数组元素和集合元素
foreach循环自动遍历数组和集合中的每个元素
//循环格式如下
for(type varibaleName:array | collection)
{ //variableName 自动迭代访问每个元素..
}
8.数组的详细内存讲解暂时跳过
9.类
类里面包换三大内容
Filed
构造器
方法
构造器:类里面如果没有定义构造器,系统会默认提供一个构造器
方法:方法不能独立定义,必须附属于类或者对象
方法类似于传统的函数,但是与函数最大的区别在于不能独立存在
方法内不能定义方法
由于以上的两点,所以方法的引用
1.在不同类中调用定义
类名.方法 或 对象名.方法
2.在本类中的调用定义
普通方法 之间的调用 : this.方法名
如果被调方法是静态的,则默认使用类作为调用者
- this的引用为同一个类中不同方法之间的访问提供解决
.。。。。。。。。。。。。。。。。。。。。
11.方法只定义,不调用,是不会执行,并且在JVM中也不会给方法分配“运行所属”的内存空间
JVM内存划分上有这样三块主要的内存空间
*方法区内存
* 堆内存
* 栈内存
方法区内存:存放字节码代码片段即.class文件。间中方法区内存最先有数据,存放了代码片段。
栈内存:当调用方法代码片段时,分配方法所属的运行空间
12.方法重载
功能相似的方法,可以写成一个方法
//以下三个功能相似的方法
//第一个为整数型求和
public static int sunInt(int a, int b )
{
return a+b;
}
//第二个为长整形求和
public static long sumLong(long a,long b)
{
return a+b;
}
//第三个为双精度浮点型求和
public static double sumDouble(double a,double b)
{
return a+b;
}
方法重载机制:overload
使得相似的方法能够使用一个方法名即可都调用
必定要功能相似的方法
//以下是重载的示例代码
//一个方法名可以调用不同的方法,这仅限于相似的方法
public class OverLoad
{
public static void main(String[] args)
{
System.out.println(sum(1,2));
System.out.println(sum(1.0,2.0));
System.out.println(sum(1l,2l));
}
public static int sum(int a ,int b)
{
return a+b;
}
public static double sum(double a,double b)
{
return a+b;
}
public static long sum(long a,long b)
{
return a+b;
}
}
方法重载的构成条件
(1)在同一个类中
(2)方法名相同
(3)参数列表不同:
数量不同
public static void m1();
public static void m1(int a);
顺序不同
public static void m2(int a,double b);
public static void m2(double a,int b);
类型不同(形参数据类型不同)
注:不同的数据类型不能够区分
public static int m3(int a);
public static double m3(double b);
13.方法递归(在解题算法中会有用到)
什么是递归:
1.自身调用自身。
a(){
a();
}
2.必须要有结束条件,不然会有栈内存溢出的错误
3.即使有有递归结束条件,但是 也可能栈内存溢出错误
//求解n的阶乘
public class Recursion
{
public static void main(String[] args)
{
int n = 4;
int revaule = method(4);
System.out.println(revaule);
}
public static int method(int n)
{
if(n==1)
{
return 1;
}
return n * method(n-1);
}
}