java数组,StringBuilder,回调函数(钩子函数).

java数组, StringBuilder,回调函数(钩子函数).
1.数组:
数组也是一个对象,数组元素就是对象里的元素
越界错误:ArrayIndexOutofBoundsException
声明:int []a=new int [3]
通过·new建立的对象都在工作栈里
数组示例代码:
package cn.bjsxt.arr;
public class Testarr {
public static void main(String[] args) {
String gh=new String("a");//此处是两个对象
//String了一个a,还有new了一个对象叫gh的value用的是"a",
//再加上for循环里建立的1000个对象一共1002个对象
//那1000个其实是拼接的,每拼一次就建立一个新对象,
//其value是之前的加拼上的
for(int i=0;i<1000;i++) {
gh=gh+i;
}
}
}

2.StringBuilder:
所在包为lang包
通过实例代码来展现其功能:
package cn.bjsxt.stringbuild;
public class canchangestr {
public static void main(String[] args) {
StringBuilder sb=new StringBuilder();//字符数组长度初始为16
StringBuilder sc=new StringBuilder(32);//字符数组长度为32
StringBuilder sd=new StringBuilder("abc");//字符数组长度为16+3=19
StringBuilder se=new StringBuilder("");//字符数组长度为16+3=19
sb.append("efg");//append:累加 在字符串sb后面加上efg 的意思
sb.append(true);//append:累加 在字符串sb后面加上布尔值直接就相连
sb.append(123);//append:累加 在字符串sb后面加上int值直接就相连
sb.append(123).append(true).append("sbnima");//通过return this实现方法链
}
}
3.回调函数(钩子函数):
例如:画窗口
步骤:启动线程 增加循环 查看消息栈
调用Frame.print();但是这是无法调用的的
自己来写一个MyFrame的类:里面放一个方法:public void print(/*Grapics g*/){ system.out.print("把窗口画出来");}
代码如下:(包括一个用new来引用类的方法)
package cn.bjsxt.oop.callback;

public class printframe {
public static void drawFrame(MyFrame f) {
System.out.print("zidongsousuo");
System.out.print("我");
System.out.print("的");
System.out.print("妹妹");
//画窗口
f.paint();
System.out.print("hehe");
}
}


代码完整示例:
printframe.java(包内的一个类):

package cn.bjsxt.oop.callback;
public class printframe {
public static void drawFrame(MyFrame f) {
System.out.print("启动线程");
System.out.print("增加循环");

System.out.print("查看消息栈");
//画窗口
f.paint();
System.out.print("启动缓存增加效率");
}
public static void mian(String[] args) {
drawFrame(new GameFrame01());//用new来引用类 new一个游戏窗口对象传入 括号里的“new GameFrame01()"就是匿名对象类
} //其实这里的new就像一个钩子,传入的是什么就调用下面的class GameFrmae01/02/03的哪个方法
// 上面的drawFrame里的代码不需要重写
//父类MyFrame就像司令部有paint()方法,各种子类GameFrame是所辖各兵种,司令爸爸坐镇,想调哪个兵种就哪个
//java里有这个printframe的类在awt包里,你只需要传入一个父类(自己写),
//mian里调用一个钩子(钩子上挂住(传入的子类方法)你才想调用的子类方法,调哪个(挂哪个钩子)就实现哪个方法
//这个printframe的类里的哪那个f.paint();是父类的方法,也可以说,当我代码写到这里不知道怎么写的时候先放一个
//这个方法,建立一个父类(父类里面写入这种方法)。这样一来就让使用的人可以随意写子类(钩子),再把钩子挂在main里出传入的钩子上
//此法很灵活、、、、、说白了就是多态(父类引用子类)//你只需要定义好子类就可以(所辖的兵种)
}
class GameFrame01 extends MyFrame{
public void paint() {
System.out.print("重写的画窗口");
}
}
class GameFrame02 extends MyFrame{
public void paint() {
System.out.print("重写的画窗口2");
}
}


class GameFrame03 extends MyFrame{
public void paint() {
System.out.print("重写的画窗口3");
}
}

MyFrame.java(包内的另外一个类):
package cn.bjsxt.oop.callback;

public class MyFrame {
public void paint() {
System.out.println("这是父类(司令部)");
}
}






  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值