链表 二叉树--数据结构的基本功
数据结构就是引用传递和递归
数组定长的线性结构的特点,使得如果内容过多或过少都会产生内存的浪费。
采用火车的车厢的问题,最好的做法就是使用一个不固定长度的数组,有多少数据就保存多少数据。类似于火车车厢。
如果想去定义火车车厢,不能只保留数据,还需要一个位置指向下一个节点。
取出的方式利用递归的方式取出。递归的要有一个结束条件
链表 二叉树--数据结构的基本功
数据结构就是引用传递和递归
数组定长的线性结构的特点,使得如果内容过多或过少都会产生内存的浪费。
采用火车的车厢的问题,最好的做法就是使用一个不固定长度的数组,有多少数据就保存多少数据。类似于火车车厢。
如果想去定义火车车厢,不能只保留数据,还需要一个位置指向下一个节点。
取出的方式利用递归的方式取出。递归的要有一个结束条件
多例设计,要求描述一周时间数的类,有七个
这些都属于多例设计模式
更多个内部实例化对象产生而已
发生
构造方法必须 私有化
不管
构造方法私有化
类内部一定提供一个static
编写几率不是很高
多例模式已经被枚举取代
JAVA 多态性的体现
方法的多态性
-Overload
同一个类中可以有多个相同方法名的方法,它们的参数列表各不相同(参数类型 参数个数 参数顺序)与返回值无关、修饰符无关。
-Override
在子类中可以存在与父类的某个方法名一致的方法,它们的参数列表相同 参数类型兼容 方法修饰符范围必须大于父类的,不可以抛出比父类更多的异常,可以抛出运行时异常。返回值可以是父类返回值的子类。
对象的多态性(前提:方法覆写)
【自动】对象向上转型
父类 父类对象 = 子类实列
【强制】对象的向下转型
子类 子类对象 = (子类)父类实列
1.用static修饰的内部类等同与外部类,其实例化的语法为:
外部类.内部类 内部类对象 = new 外部类.内部类().
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类,返回结果就一定是字符串
数组只要一个索引就可以使用
【行索引】【列索引】
动态初始化
数据类型 对象数组 [] []=new 数据类型 [行个数][列个数];
静态初始化 在动态数组的基础上加上数组内部的具体数值
int data[] []= new int[] []{
{1,2,3},{4,4,5},{5,6,8}}
private 必须要有setter getter
但是必须要包括一个无参构造方法
类中所有的方法都不允许有system.out.println语句
类中有返回完整信息的方法 ,即getinfo()
构造方法与类的名称一样
public Person(){
System。}
出现new语句的时候才出现构造方法
属性是在开辟堆内存的时候形成的
public void Person()命名不标准 就是普通方法
与public Person() 构造方法
不能用void 来定义构造方法
有参构造在无参执行的时候会报错
构造方法的调用可以一次性传递所有参数,为数据进行初始化。
setter 不仅可以用于设置数据,可以用于修改数据。
1、类定义
2、属性
3、构造方法
4、普通方法
匿名对象
堆内存可以被多个栈内存调用
栈内存存放内存地址。
堆内存是内容
per1 per2都有各自的指向,如果把per1的地址内容给了per2,则需要先把per2原先的与内容的连接断开。 原先per2所指向的堆内存是为垃圾内存。
再重新操作per2,则输出的是更改过的per2的内容。
垃圾空间是指没有栈内存指向的堆内存。会被GC garbage collecter收集。gc影响性能,故而要控制对象的产生数量,也即少产生无用的对象。
面向生活抽象,生活中可行就可以以程序进行实现。
1.public String substring(int beginIndex)由指定索引处截取到末尾。
public String substring(int beginIndex,int endIndex)截取部分字符串。
1.public String[] split(String regex,int limit)将字符串部分拆分,返回的是一个字符串数组。
public String[] split(String regex)将字符串部分拆分。若发现有些n
1.public boolean contains(String s) 判断一个子字符串是否存在。
public int indexOf(String str)从头开始查找字符串的位置,若存在则返回索引处,否则返回-1.
public int indexOf(String str,
int fromIndex)从指定位置查找子字符串的位置。
public int lastIndexOf(String str)从字符串的末尾向前查找指定字符串的位置。
public boolean startsWith(String prefix)判断是否以指定的字符串开头。
public boolean startsWith(String prefix,int toffset)判断指定位置是否以指定字符串开头。
public boolean endsWith(String suffix)判断是否以指定字符串结尾.
2.一般查找字符串都建议使用contains()方法完成。
3.indexOf只能查找指定字符串第一次出现的位置。
1.在String类中compareTo()方法是一个最为重要的操作方法,其返回值为Int类型。
(1)相等,返回0;
(2)小于:返回的内容小于0;
(3)大于:返回的内容大于0
程序是按照结构的偏差归类,而不是根据方法名来定义
课时2 类与对象(类与对象基本定义)
类是引用数据类型
假设类是引用数据类型,那么类就是模型.类是引用,也可以理解,毕竟是调用关系.也就是调用类的方法,那么数类型 就是指其中的方法定义中的数据吗?
面向对象
有认为人面向对象更加复杂,更多人愿意用函数式编程.
面向对象具备:
封装性: 内部的操作对外部而言不可见;
继承性: 在上一辈基础上继续发展
多态性: 在一个可控的范围的改变
1.字符串常量是不可更改的,可以更改的是对象对象对字符串的引用,但是这样会产生很多垃圾,造成内存浪费。
1.采用直接赋值的模式进行String类对象的实例化操作,则该实例化对象(字符串内容)将自动保存在Java中的对象池中。下次创建对象是采用直接赋值的方式创建相同的字符串,则不会new新的东西,直接调用对象池中的对象。
2.使用构造方法创建字符串,则会产生垃圾空间,实际上也会对字符串共享产生一定的问题。
3.public String intern()方法可以实现将new出来的字符串常量放入共享池中。
1.在开发过程中,如果要判断用户输入的字符串是否等同与指定的字符串,那么一定要将字符串写在前面。