✅ 操作成功!

java学习笔记

发布时间:2023-06-13 作者:admin 来源:文学

java学习笔记

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

简单理解就是这个句话下边的方法是继承父类的方法,对其覆盖。

👁️ 阅读量:0