- NullPointerException:空指针异常 原因:数组已经不再指向堆内存了。而你还用数组名去访问元素。
- 对于查找问题,如果找到就返回其索引值,如果找不到就要返回一个负数(一般是负一)这是必须的,否则如果找不到,就没有返回值,这样程序就会报错。
- 二维数组的元素是一个一维数组(这样好理解二维数组);一维数组是引用类型,默认值是null.
- 二维数组的格式 数据类型【】【】变量名=new 数据类型【m】[n];m表示这个二维数组有多少个一维数组,n表示每一个一维数组的元素个数。
- 二维数组的其他格式:数据类型 变量名【】【】=new数据类型【m】【n】,数据类型【】变量名【】=new数据类型【m】[n];(这两种不推荐使用);
- 输出数组名是一个地址值;
- 数据类型【】【】变量名=new 数据类型【m】[],这种定义只给出二维数组中包含了m个一维数组,但是并没有给出一维数组元素的个数,这时我们给以动态给出,并且每一个一维数组的个数可以不同(就是列可以不同);
- 一维数组没有分配空间是null(因为一维数组是引用类型)分配之后才是对应类型的默认值。
- 二维数组的第一个值是必须要给的,否则无法分配内存, 因为就不知道要多少空间,第二个值可以给也可以不给。
- 二维数组的静态定义:数据类型【】【】变量名=new数据类型【】【】{{元素1}{元素2}……..};简化版:数据类型【】【】变量名={{元素1}{元素2}……};
- 二维数组的遍历:外循环的是二维数组的长度,其实就是一维数组的个数。内循环控制的是一维数组的长度。
- 方法存在内存的方法区(有方法标记识别,否则被别的程序调走)。
- Java中的参数传递问题:基本数据类型:形式参数的改变对实际参数没有影响。引用类型:形式参数的改变直接影响实际参数(因为二者指向的地址一样)
- 因为static变量也就是静态变量,在程序运行过程中被声明后就会一直保存在内存里,所以只能声明一次,第二次再访问那个函数时,给静态变量声明同时赋值的语句就不再执行了,而静态变量的值始终保存在内存里,也就是上次改变以后的值。(知道程序结束)没有static修饰的函数中的变量,只在函数被执行时占用内存,函数执行完毕后就被销毁,数据也就不存在了,所以每次都要声明,值也就不会变。
- 面向对象将我们从执行者变成指挥着(爽吧);
- 面向对象:首先想到这个问题有多少类。然后类中有什么东西,最后看类与类之间的关系。类的获取一般是名词。(uml语言有所介绍);
- 面向对象的三大特征(封装,继承,多态);
- 多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)
- Java中最基本的单位是类。类是一组相关属性和行为的集合,对象是该类事物的具体表现。
- 成员变量和局部变量的区别:A;成员变量(在类中方法外),局部变量(在方法定义中或者方法声明上)B:成员变量:在堆内存,局部变量:在栈内存。成员变量:随着对象的创建而存在,随着对象的消失而消失。局部变量:随着方法的调用而存在,随着方法的调用完毕而消失;成员变量:有默认初始化值,局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
- 局部变量名称和成员变量名称可以一样,在方法中使用的时候,采用的就近原则。
- 如果你看到一个方法的形式参数是一个类(引用类型)这里其实需要的是该类的对象。
- 匿名对象:没有名字的对象。(new s() 就是一个匿名对象);
- 匿名对象的应用场景:A;调用方法,仅仅只调用一次的时候,多次调用不适合(因为多次开辟堆内存)好处:匿名对象调用完毕后就是垃圾,可以被垃圾回收器回收。B;匿名对象可以作为实际参数传递。
- Private:私有的。可以修饰成员变量和成员方法。被private修饰的成员只能在本类中使用。
- 封装:是指隐藏对象的属性和实现细节,仅对外提供公共的访问方式。(提高代码复用性和安全性)
- This:是当前类的对象引用。简单的记,它就代表当前类的一个对象。方法被那个对象调用,this就代表哪个对象。
- 构造函数;给对象的数据进行初始化。方法名和类名一样,没有返回值类型,连void都没有,没有具体的返回值,故也没有return.,它可以重载。
- 给成员变量赋值的两种方式:setXxx(), 构造方法。
- Student s=new Student();做了哪些事情:
- 变量的范围是越小越好,因为这样可以及时的回收。
- 导入的包必须出现在所有的类前面。
- 针对多个对象有共同的成员变量值的时候就可以用static关键字(比如国籍);
- Static的特点:(他可以修饰成员变量和修饰成员方法)a:随着类的加载而加载(回想main方法)B:优先于对象存在c;被类的所有对象共享(如果某个成员变量是被所有对象共享的,那么它就应该是静态的)D;可以通过类名调用(其实它本身也可以通过对象名调用,推荐使用类名调用)静态修饰的内容一般我们称其为:与类相关的。类成员。
- Static关键字注意事项:A;在静态方法中是没有this关键字的(因为静态是随着类的加载而加载,this是随着对象的创建而存在,静态比对象先存在,即前面不能调用后面)b:静态方法只能访问静态的成员变量和静态的成员方法。,而非静态方法既可以访问静态成员变量和静态成员方法,也可以访问非静态的成员和方法。(静态只能访问静态,非静态可以访问一切)
- 思考题:构造方法中可不可以有return语句呢?
- 可以。而是我们写成这个样子就OK了:return; 其实,在任何 的void类型的方法的最后你都可以写上:return;
- 构造方法的注意事项A:如果我们没写构造方法,系统将提供一个默认的无参构造方法B:如果我们给出了构造方法,系统将不再提供默认构造方法,这个时候如果我们想用无参构造方法就必须自己写出。(推荐永远自己写出);
- 工具类中是可以使用静态的。将构造方法私有化,外界就不能创建对象了。
- 如何制作一个说明书:A;写一个工具类B;对这个类加入文档注释/** */C:用工具解析文档注释(javadoc工具)d:格式javadoc –d 目录 –author –version 工具类名称.java. --------》待续
时间: 2024-10-24 01:20:28