面向生活抽象,生活中可行就可以以程序进行实现。
面向生活抽象,生活中可行就可以以程序进行实现。
数组只要一个索引就可以使用
【行索引】【列索引】
动态初始化
数据类型 对象数组 [] []=new 数据类型 [行个数][列个数];
静态初始化 在动态数组的基础上加上数组内部的具体数值
int data[] []= new int[] []{
{1,2,3},{4,4,5},{5,6,8}}
1.类定义完之后不能直接使用,必须先new一个对象才能调用。
两种方法: (1)声明并实例化对象:
类名称 对象名称 = new 类名称();
(2)分布进行对象实例化:
【1】声明对象: 类名称 对象名称 =null;
【2】实例化对象:对象名称 = new 类名称();
2.调用类中的属性:对象.属性= 内容;
调用类中的方法:对象.方法();
访问static属性直接通过类名称。
而非static属性必须通过实例化对象才能访问。
实例化对象的产生格式:
类名称 对象名称 = new 类名称();
对于以上的格式观察组成部分:
所以通过以上分析可以清楚,所谓的构造方法指的就是在使用关键字new实例化新对象的时候来进行调用的操作方法,但是对于构造方法定义也需要遵守如下原则:方法名称必须与类名称相同,并且构造方法没有返回值类型声明,同时每一个类中一定会至少存在一个构造方法,如果类中没有一个构造方法,那么将自动生成一个无参的,什么都不做的构造方法。
类的组成:属性、普通方法、构造方法。
属性是在对象开辟堆内存的时候就开辟的空间;
构造方法是在使用关键字new的同时调用的;
普通方法是在对象实例化完成了(空间开辟了,构造方法执行了)再调用的,可以调用多次;
构造方法的作用:
构造方法的调用和兑现内存分配几乎是同步完成的,所以可以利用构造方法设置类中的属性内容,构造方法可以为类中的属性进行初始化处理;
通过构造方法设置内容实际上就可以避免重复的setter调用了。
在实际开发之中,setter方法除了具备有设置内容制外,还可以承担修改数据的操作。
既然构造方法本身属于方法,那么方法就一定可以进行重载,而构造方法的重载更加简单,因为方法名称就是类名称,所以可以做的只是实现参数的类型或个数不同这一概念。
在进行类定义的时候,注意以下:
由于匿名对象不会有任何的栈空间所指向,所以使用一次之后就将成为垃圾。
构造方法每个类中至少存在一个;
构造方法的名称与类名称相同,无返回值类型定义;
构造方法允许重载,重载时只需要考虑方法的参数类型或个数即可;
类中的属性必须用private封装
属性必须按要求提供setter,getter方法;
类中必须保留一个无参构造方法,可以定义多个构造方法
类中的方法都不允许出现system.out的语句
类中必须提供一个返回类完整信息的方法。
简单java类:
属性
构造方法
setter方法
getter方法
声明数组:
数据类型 数组名称 []=null;
开辟数组空间 :数组名称=new 数据类型 [长度]
例如 String product[ ]=null;
product=new String[100];
String Product[]=new String[100];
数组长度:数组名称.length;
数组必须开辟空间(实例化)
程序是按照结构的偏差归类,而不是根据方法名来定义
多例设计,要求描述一周时间数的类,有七个
这些都属于多例设计模式
更多个内部实例化对象产生而已
发生
构造方法必须 私有化
不管
构造方法私有化
类内部一定提供一个static
编写几率不是很高
多例模式已经被枚举取代
数组空间开辟:
int data []=null;
有栈值,没有堆值;
有 new 之后才会开辟 堆空间
如果发生引用传递,不能有中括号
比如:int data []=new int [100];
int temp[]=null;
for(int i=0;i<100;i++){
data[i]=i;
}
如果temp要引用data,
则temp=data;不要出现中括号
temp=data;引用传递:::data里面存的是地址
此时 若利用temp修改值,则data指向的值也改变了。因为它们指向的是同一地址。
程序维护方面,面向对象方法有优势
堆内存可以被多个栈内存调用
栈内存存放内存地址。
堆内存是内容
per1 per2都有各自的指向,如果把per1的地址内容给了per2,则需要先把per2原先的与内容的连接断开。 原先per2所指向的堆内存是为垃圾内存。
再重新操作per2,则输出的是更改过的per2的内容。
垃圾空间是指没有栈内存指向的堆内存。会被GC garbage collecter收集。gc影响性能,故而要控制对象的产生数量,也即少产生无用的对象。
重载
1.Overloading
2.方法名称相同,参数的类型及个数不同
3.发生在一个类之中
4.没有权限要求
覆写
1.Override
2.方法名称、返回值类型、参数的类型及个数完全相同
3.继承关系之中
4.被覆写的方法不能有比父类更高的访问使用权限
数组赋值用大括号
缺点:shu'zu'chang'du'gu'd
public String(char[] value)字符串就是字符数组。
public String (char[] value,int offset,int count)将字符数组中的所有内容变成字符串。
public char charAt(int index),取得索引位置的字符。0为起始位置。
toChararray 将字符串变为字符数组
字符串和字符数组的互相转换是重点内容
System.out.promtln(new String(data,5,5))//部分转换
System.out.println(new String(data))实现字符数组转换成字符串。
调用String类,返回结果就一定是字符串
外部循环控制行数;
内部循环控制列数
数组排序的方法:Arrays.sort()
数组拷贝:A,B,将B的一段拷贝到A,则A是源
System.arraycopy(源数组名称,源数组拷贝起始坐标,目标数组,目标数字接受起始位置,拷贝长度)
求数组,最值,均值,总和。
上述要求一定需要循环
主方法应该越简单越好。
数组的数据类型有局限性,数据类型必须相同