
java学习笔记
-
2023年3月18日发(作者:赠李白)1
1.基本语法规则
1)每一个Java文件中可以有多个类,但只能有一个用public修饰的类,且文件
名与该类名相同。其他类只能使用默认修饰符default(不用标明)。
2)构造方法没有返回值,也没有void
3)
4)类的分类
a)抽象类:
使用abstract修饰符修饰的类称为抽象类。没有具体的对象。是所有子
类公共属性的集合。
b)最终类:
如果一个类被final修饰符所修饰,说明这个类不可能有子类。
关键字
1)类对象创建后,系统分配给每个对象的指针。不同对象有不同的This。
2)this关键字只能使用在非静态方法中。
3)This用法:
a)引用该方法所属类的对象。
b)在函数参数与类成员变量同名时用于区分。(如构造函数)
c)一个类可能有多个构造方法,在一个构造方法中调用其他构造方法。
2
3.内部类
1)定义在另一个类里面的类叫内部类。
2)内部类的对象,能够访问外部类的所有成员。
3)创建内部类的对象(必须先创建外部类对象)
外部类名.内部类名对象名=外部类对象名.new内部类名();
4)内部类与向上转型(就是将内部类转换为基类型)
5)/syniii/archive/2010/11/25/
4.文本文件的读写
1)PrintWriter
PrintWriteroutput=newPrintWriter(“”);
(“abc”);
;
2)Scanner
Scannerinput=newScanner(“”);
Stringstring=ne();
a)Scanner类中next()和nextline()方法的区别?
next()方法从第一个非分隔符开始至下一个分隔符结束,返回的是不含空
格的字符串。(分隔符包括空格和换行)
nextline()方法只对换行符敏感,返回的是可以包含空格的字符串。
b)Scanner类用于从键盘读入!
详见“13”。
5.二进制文件的读写
3
1)java中所有IO类都要抛出IOException。(throwsIOException)
2)InputStream类是二进制输入类的根类,OutputStream类是二进制输出类的
根类。
3)FileInputStream类和FileOutputStream类
a)构造方法(创建类的对象)
FileInputStream(File:file)
FileInputStream(String:filename)
(若为不存在文件创建FileInputStream对象,会抛出异常)
FileOutputStream(File:file);
FileOutputStream(String:filename);
FileOutputStream(File:file,boolean:append);true,追加内容
FileOutputStream(String:filename,boolean:append);true,追加内容
b)常用方法
write(“”);无返回值
read();每次读取一个字节,并作为返回值返回;当返回值为-1时,文件
到达末尾。
read(a);其中a为一个数组;每次读取数组长度的字节,并返回;当返回-
1时,文件到达末尾。
4)FilterInputStream类和FilterOutputStream类
4
(出于某种目的,过滤字节的数据流)
(read()方法只能读取字节,若要读取数值或字符串,就要使用过滤器类包装
输入数据流,但是字符还不行)
a)DataInputStream类和DataOutputStream类
(FilterInputStream类和FilterOutputStream类是过滤数据的基类,一般使用
DataInputStream类和DataOutputStream类)
实现了字节与字符串,数值之间的双向转换。
分别实现了DataInput接口和DataOutput接口。
DataInputStream类(DataInput接口)的方法:readBoolean();readByte();
readChar();readFloat();readDouble();readInt();readLong();readShort();
readLine();readUTF();
DataOutputStream类(DataOutput接口)的方法:writeBoolean();writeByte();
writeBytes();writeChar();writechars();writeFloat();writeDouble();writeInt();
writeLong();writeShort();writeUTF();
同一内容的读写,应使用对应的read()和write()函数。
DataInputStream类的读取方法,在读到文件末尾时会抛出异常,所以要使用
try{}catch(){}块。
5)BufferedInputStream类和BufferedOutputStream类
a)BufferedInputStream类和BufferedOutputStream类为存储字节在流中添
加了一个缓冲区,提高处理效率。
b)flush()方法,将缓冲区内容读入或写出。
c)DataInputStreamf=newDataInputStream(new
BufferedInputStream(newFileInputStream(“”)))
关联文件->输入/输出流->缓冲区流->数据流。
6)ObjectInoutStream类和ObjectOutputStream类
实现类对象的读写。
6.获取键盘值的两种方法
1)BufferedReader类和InputStreamReader类(字符串)
5
BufferedReaderbr=newBufferedReader(newInputStreamReader
());
Stringstr=null;
str=ne();
2)Scanner类(字符串,数值等)
Scannersc=newScanner();
stringname=ne();
intage=t();
floatsalary=oat();
edReader类和BufferedWriter类
1)使用InputStream类,按字节读取。每读取一个字节,调用一次IO,但调用
IO时很费时的。使用BufferedReader类,一次读取大量数据,提高效率。
2)FileReaderf=newFileReader(“c:”);
BufferedReaderread=newBufferedReader(f);
3).readline();读取回车符前所有字节
.write();
.newline();写入时,光标另起一行
Buffer类
1)StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的
内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成
新的对象,在内存使用上要优于String类。
2)StringBuffer和String属于不同的类型,不能赋值,也不能直接进行强制类型
转换
3)类的方法
a)append()——追加函数
StringBuffersb=newStringBuffer(“abc”);
(“123”);
则sb内容为abc123
6
b)deleteCharAt(inta),delete(intstart,intend)——删除固定位置的字符
StringBuffersb=newStringBuffer(“abc”);
CharAt(1);
则sb内容为ac
c)insert(intoffset;string/char)——插入
StringBuffersb=newStringBuffer(“abc”);
(1,hhh);
则sb为a111bc
d)reserve()——反转字符串
StringBuffersb=newStringBuffer(“abc”);
e();
则sb为cba
e)setCharAt(inta,charb)——修改字符
StringBuffersb=newStringBuffer(“abc”);
rAt(1,B);
则sb为aBc
f)trimToSize()—将StringBuffer类对象空间缩小大字符串大小,节约内存
没有返回值:Size();
g)tostring()——将StringBuffer对象转换为String;
4)/springcsc/archive/2009/12/03/
ing()
1)通过字符串生成子串
2)stringstr=“12345”;
intj=1;
ing(j+1);
则字串为“345”
1)HttpSeveletRequest和HttpSeveletrequest
a)公共接口类HttpServletRequest继承自ServletRequest.客户端浏览器发
出的请求被封装成为一个HttpServletRequest对象。所有的信息包括请求
的地址,请求的参数,提交的数据,上传的文件客户端的ip甚至客户端
7
操作系统都包含在其内。HttpServletResponse继承了ServletResponse
接口,并提供了与Http协议有关的方法,这些方法的主要功能是设置
HTTP状态码和管理Cookie。
b)/doc/
c)HttpServletRequest的getSession()方法
d)
2)response和request的setCharacterEncoding()区别
a)request的setCharacterEncoding是用于确保参数信息以汉字编码方式来
提取的。一般都是表单提交到servlet那里然后用request来解决中文乱
码。
b)racterEncoding()可以不用。
tentType("text/html");
racterEncoding("XXX");这两行代码和
tentType("text/html;charset=XXX");等价。
8
中使用线程的两种方法
(继承Thread类;复写Runnable接口)
1)任何一个Java程序都必须有一个主线程。主线程的线程执行体不是由run()方
法来确定的,而是由main()方法来确定的,由main()方法开启线程。而子线
程需要通过start()方法开启线程。
2)Thread中的方法
a)currentThread():该方法是Thread类的静态方法,该方法总是返回当前
正在执行的线程对象的引用。
b)getName():该方法是Thread类的实例方法,该方法返回调用该方法的
线程的名字。
c)setName(Stringstr):设置线程名字,对象名只是一个引用不是名字。
3)继承Thread类方式的优缺点:
a)优点:编写简单,如果需要访问当前线程,无需使用
tThread()方法,直接使用this,即可获得当前线程。
b)缺点:因为线程类已经继承了Thread类,所以不能再继承其他的父类。
4)*******以上为继承Thread方法,下面为复写Runnable接口********
5)实现Runnable接口的类必须使用Thread类的实例才能创建线程。
6)复写Runnable接口方法优缺点
a)优点:线程类只是实现了Runable接口,还可以继承其他的类。在这种
方式下,可以多个线程共享同一个目标(target)对象,所以非常适合多个
相同线程来处理同一份资源的情况,从而可以将CPU代码和数据分开,
形成清晰的模型,较好地体现了面向对象的思想。
b)缺点:编程稍微复杂,如果需要访问当前线程,必须使用
tThread()方法。
7)/liushaogeng/article/details/6120472
8)注意
a)一个线程只能被启动一次,否则会抛出异常。
b)Java不保证线程的执行顺序。
();
9
();
也不保证在t1结束运行后,才启动线程t2.
er与Int的区别
1)Int为基本数据类型,Intenger是一个类。
2)inta=2;
intengerb=newintenger(1);
a仅仅是一个能进行加减乘除的数值,而b为一个对象,可以有很多操作,且
这些操作只能通过类方法实现。
3)int默认值为0,intenger默认值为null。
4)/ying_24ying/article/details/7068174
ist
1)ArrayList为动态数组,可自动改变容量。当容量满后,2倍增加。存储速度
较慢。
2)ArrayList三种初始化方式:
a)ArrayListal=newArrayList();默认容量为0;
b)ArrayListal=newArrayList(3);设置初始容量为3;
c)ArrayListal=newArrayList(a);a为集合和数组;
3)ArrayList处理方法
a)添加数据:
Add(objectvalue)——("a”),(„b‟),(3);
Insert(intindex,objectvalue);在确定位置插入;
InsertRange(intindex,ICollectionc);
b)删除数据:
Remove(objectvalue);
Remove(intindex);
RemoveRange(intindex,intcount);
c)查找数据:
contains(objectvalue)——存在返回true;
IndexOf(objectvalue)——返回位置,没有返回-1;
10
IndexOf(objectvalue,intstartindex)——从startindex开始检索,返回第
一个位置或-1;
IndexOf(objectvalue,intstartindex,intcount)——从startindex开始,
检索count个元素,返回第一个位置或-1;
LastIndexOf()——用法与IndexOf()相同,也有三种。返回最后出现位置。
4)判断ArrayList是否为空:
if(y()){}
if(()==0){}
5)ArrayList的遍历
a)for(int1=0;i<;i++){}
b)
6)/zzuhjf/archive/2011/07/19/
h语句
1)foreach语句格式
for(part1:part2){part3}
part1定义了一个局部变量,这个局部变量的类型与part2中的对象元素的类型
是一致的.
part2中是一个数组对象,或者是带有泛性的集合.
part3是循环体.
类的getBytes()方法
1)es()将字符串转换成字节数组。
2)byte[]gb=es(“GBK”);照GBK编码方式将字符串装换成字节数组
如果省略了编码方式,就采用操作系统的默认编码方式。
3)newString(byte[],decode);将字节数组按制定编码方式转为字符串。
4)Stringstr=newString(byte[],decode);
16.类集Collection
1)一个类集是一组对象;
2)/s/blog_
结构(JavaScript)
1)Json数据结构:名值对;对象用{};数组用[];名值对用:和,;
11
2)Json数据值可以是:数值,字符串,逻辑值,数组,对象,null。
3)Json数据结构:对象和数组;
4)Json可兑换;
5)Json数据的访问和更改:点号表示法(.);
6)Json结构具体形式:
a)对象是一个无序的名值对集合;
b){“姓名”:“大汉”,“年龄”:“24”}
7)数组是值的有序集合:
18.补充
1)@Override
简单理解就是这个句话下边的方法是继承父类的方法,对其覆盖。