77范文网 - 专业文章范例文档资料分享平台

《郝斌开发经验(java)》(2)

来源:网络收集 时间:2019-01-26 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

构造函数的返回值问题(构造函数没有返回值)

构造函数数据成员的赋值--对象被创建时会对其中各种类型的成员变量自动初始化赋值 多个构造函数可能带来的冲突(如果不定义程序就会默认提供,定义后就不再提供)

关键字this(理解成当前对象的引用或指针)

一个类的new出多个对象,成员变量放在内存的不同区域,但是方法只有一个且放在代码段---成员方法如何区别是哪一个对象掉用自己?--每一个非静态方法中都隐含一个this指针

关键字static(成员属于类)

非私有静态属性或方法可以直接用类名访问,类的对象也可以直接访问; 静态方法不可以访问非静态成员;非静态方法可以访问静态成员;

Static应用:创建对象计数;单态模式★--只能创建一个对象(见例子 TestStatic_2.java);

面向对象编程(下)

继承(extends)

(1)子类内部可以访问父类非私有的成员;

(2)子类的外部(子类new出来的对象),通过子类对象名只能访问从父类继承过来的非私有成员(反过来父类对象访问子类的成员同理,子类把public等修饰符也继承过来了) (3)通过子类的类名访问父类的成员

总之--私有不能被继承(私有成员逻辑上已经被继承过来的,只是不能访问,因此继承要慎重否则浪费内存空间) 不同包的继承问题

继承原则:区别汽车和车轮的关系(包含关系) 父类/基类--子类/派生类

super

java只允许单继承(C++允许多继承)接口可以一定程度上解决单继承的缺陷 Super的使用(见TestSuper_1.java/TestSuper_2.java/TestSuper_3.java)

Super的应用---情景:父类有很多很多属性,子类继承过来如果一个个进行初始化就会太麻烦,可以使用Super调用父类的构造器进行初始化 总结:

1、每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。

2、如果显示的写出super();语句,则必须保证该语句是第一条语句,否则会出错

3、super();如果不写,则编译器会自动添加,所以此时如果父类没有无参的构造函数就会出错 4、既可以显示写super();前提是父类必须有无参的构造函数也可以显示写super(实参); 前提是父类必须有带参的构造函数

5、调用父类的构造函数的语句必须借助于super,不能直接写父类的类名,这与C++不同, 6、一个构造函数中不能写多个super(参数列表)语句; Super.f();

方法的重写--子类要比父类的权限大(否则多态无法实现) TestStudent.java 多态(一个父类的引用类型变量既可以指向父类对象也可以指向子类对象,它可以根据当前

时刻指向的不同,自动调用不同对象的方法,这就是多态) 多态的作用:同一段代码做不同的事情(TestPoly_1.java) 通过父类的引用只能指向子类从父类继承过来的成员; 父类的引用永远不可能直接赋给子类的引用;只有当在父类引用本身指向的就是一个子类对象时,才可以把父类引用强制转换为子类引用

抽象类(abstract 美[??b?str?kt])的由来:比如“植物”抽象词 abstract class A {

abstract public void f();//没有方法体的方法叫做抽象方法,抽象方法没有方法体 }

有抽象方法的类一定是抽象类,抽象类不一定有抽象方法;

可以定义一个抽象类的引用(多态抽象类),但不可以创建一个抽象类对象 Final:

修饰 整个类:表示不能被继承

成员属性:表示属性必须被赋值,且只能被赋值一次,通过两种方式 成员方法:可以继承但不可以重写

接口interface(特殊的抽象类)抽象方法和常量属性的集合

接口和抽象类的区别:抽象类是一个类可以被继承,接口不能被继承只能被实现用关键字implements(实现)

接口内的方法没有 {},不允许有非抽象方法 包:

Javac -d . TestPackage.java

Java myPackage.cy.TestPackage

Path: exe的路径

Classpath: class的路径 DOS命令:

设置类的路径:set classpath=c:\\Documents and setting\\... 同包不同类的访问: 启动类

Javac a.java b.java 两个一起编译 同包非私有成员都可以 不同包的访问:

共有的类的共有成员才可以被另外一个包的类访问 Import

公有类保证可以在另一个类中创建对象,公有方法 除了内部类 普通类只能用public 或者什么都不修饰 如何生成jar包 放在一个文件夹中

DOS下 jar cvf xxx.jar *(进入当前目录)

如何使用jar包

Import zhangsan.lidi.A;

Set classpath=c:\\documents and settting\\....t.jar;

面向对象的特点: 封装:

访问控制符:只有private

This:一个对象只含有属性的空间 private

继承:java只允许单继承,私有成员无法被继承 重写:方法名和参数列表和返回值必须一样 多态:

放在java.lang包中的类不需要引入,其他的类都需要手动引入

Object类的方法---toString()方法 一个类默认继承Object

该方法返回“类名@哈希码--该对象在内存堆中的地址”

System.out.println(类的对象名)--实际输出的是该对象的toString()方法所返回的字符串 重写toString方法的意义:为了实际需要

String和StringBuffer: JAVA的StringBuffer类:

StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。

所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。

在StringBuffer类中存在很多和String类一样的方法,这些方法在功能上和String类中的功能是完全一样的。

但是有一个最显著的区别在于,对于StringBuffer对象的每次修改都会改变对象自身,这点是和String类最大的区别。

另外由于StringBuffer是线程安全的,关于线程的概念后续有专门的章节进行介绍,所以在多线程程序中也可以很方便的进行使用,但是程序的执行效率相对来说就要稍微慢一些。

1、StringBuffer对象的初始化

StringBuffer对象的初始化不像String类的初始化一样,Java提供的有特殊的语法,而通常情况下一般使用构造方法进行初始化。 例如:

StringBuffer s = new StringBuffer();

这样初始化出的StringBuffer对象是一个空的对象。

如果需要创建带有内容的StringBuffer对象,则可以使用: StringBuffer s = new StringBuffer(“abc”);

这样初始化出的StringBuffer对象的内容就是字符串”abc”。

需要注意的是,StringBuffer和String属于不同的类型,也不能直接进行强制类型转换,下面的代码都是错误的:

StringBuffer s = “abc”; //赋值类型不匹配

StringBuffer s = (StringBuffer)”abc”; //不存在继承关系,无法进行强转 StringBuffer对象和String对象之间的互转的代码如下: String s = “abc”;

StringBuffer sb1 = new StringBuffer(“123”);

StringBuffer sb2 = new StringBuffer(s); //String转换为StringBuffer String s1 = sb1.toString(); //StringBuffer转换为String 2、StringBuffer的常用方法

StringBuffer类中的方法主要偏重于对于字符串的变化,例如追加、插入和删除等,这个也是StringBuffer和String类的主要区别。 a、append方法

public StringBuffer append(boolean b)

该方法的作用是追加内容到当前StringBuffer对象的末尾,类似于字符串的连接。调用该方法以后,StringBuffer对象的内容也发生改变,例如: StringBuffer sb = new StringBuffer(“abc”); sb.append(true);

则对象sb的值将变成”abctrue”。

使用该方法进行字符串的连接,将比String更加节约内容,例如应用于数据库SQL语句的连接,例如:

StringBuffer sb = new StringBuffer(); String user = “test”; String pwd = “123”;

sb.append(“select * from userInfo where username=“) .append(user)

.append(“ and pwd=”) .append(pwd);

这样对象sb的值就是字符串“select * from userInfo where username=test and pwd=123”。 b、deleteCharAt方法

public StringBuffer deleteCharAt(int index)

该方法的作用是删除指定位置的字符,然后将剩余的内容形成新的字符串。例如: StringBuffer sb = new StringBuffer(“Test”); sb. deleteCharAt(1);

该代码的作用删除字符串对象sb中索引值为1的字符,也就是删除第二个字符,剩余的内容组成一个新的字符串。所以对象sb的值变为”Tst”。 还存在一个功能类似的delete方法:

public StringBuffer delete(int start,int end) 该方法的作用是删除指定区间以内的所有字符,包含start,不包含end索引值的区间。例如: StringBuffer sb = new StringBuffer(“TestString”);

sb. delete (1,4);

该代码的作用是删除索引值1(包括)到索引值4(不包括)之间的所有字符,剩余的字符形成新的字符串。则对象sb的值是”TString”。 c、insert方法

public StringBuffer insert(int offset, boolean b)

该方法的作用是在StringBuffer对象中插入内容,然后形成新的字符串。例如:

StringBuffer sb = new StringBuffer(“TestString”); sb.insert(4,false);

该示例代码的作用是在对象sb的索引值4的位置插入false值,形成新的字符串,则执行以后对象sb的值是”TestfalseString”。 d、reverse方法

public StringBuffer reverse()

该方法的作用是将StringBuffer对象中的内容反转,然后形成新的字符串。例如: StringBuffer sb = new StringBuffer(“abc”); sb.reverse();

经过反转以后,对象sb中的内容将变为”cba”。 e、setCharAt方法

public void setCharAt(int index, char ch)

该方法的作用是修改对象中索引值为index位置的字符为新的字符ch。例如: StringBuffer sb = new StringBuffer(“abc”); sb.setCharAt(1,’D’);

则对象sb的值将变成”aDc”。 f、trimToSize方法

public void trimToSize()

该方法的作用是将StringBuffer对象的中存储空间缩小到和字符串长度一样的长度,减少空间的浪费。

总之,在实际使用时,String和StringBuffer各有优势和不足,可以根据具体的使用环境,选择对应的类型进行使用。

String中的equals方法

线程:

进程:一个程序加载数据后的一次运行

线程:TestThread_1.java 一个程序的 不同的执行路径

单线程:程序一步步执行,执行完上一步才执行下一步, 多线程(thread):创建线程后,多个线程之间交替执行 时间片轮转算法

创建线程的方法一:继承Thread 【注意】

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库《郝斌开发经验(java)》(2)在线全文阅读。

《郝斌开发经验(java)》(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/446678.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: