JAVA入门学习笔记.docx
《JAVA入门学习笔记.docx》由会员分享,可在线阅读,更多相关《JAVA入门学习笔记.docx(12页珍藏版)》请在冰豆网上搜索。
JAVA入门学习笔记
1.基本语法规则
1)每一个Java文件中可以有多个类,但只能有一个用public修饰的类,且文件名与该类名相同。
其他类只能使用默认修饰符default(不用标明)。
2)构造方法没有返回值,也没有void
3)
4)类的分类
a) 抽象类:
使用abstract修饰符修饰的类称为抽象类。
没有具体的对象。
是所有子类公共属性的集合。
b)最终类:
如果一个类被final修饰符所修饰,说明这个类不可能有子类。
2.This关键字
1)类对象创建后,系统分配给每个对象的指针。
不同对象有不同的This。
2)this关键字只能使用在非静态方法中。
3)This用法:
a)引用该方法所属类的对象。
b)在函数参数与类成员变量同名时用于区分。
(如构造函数)
c)一个类可能有多个构造方法,在一个构造方法中调用其他构造方法。
3.内部类
1)定义在另一个类里面的类叫内部类。
2)内部类的对象,能够访问外部类的所有成员。
3)创建内部类的对象(必须先创建外部类对象)
外部类名.内部类名对象名=外部类对象名.new内部类名();
4)内部类与向上转型(就是将内部类转换为基类型)
5)
4.文本文件的读写
1)PrintWriter
PrintWriteroutput=newPrintWriter(“a.txt”);
output.print(“abc”);
output.close;
2)Scanner
Scannerinput=newScanner(“a.txt”);
Stringstring=input.nextline();
a)Scanner类中next()和nextline()方法的区别?
next()方法从第一个非分隔符开始至下一个分隔符结束,返回的是不含空格的字符串。
(分隔符包括空格和换行)
nextline()方法只对换行符敏感,返回的是可以包含空格的字符串。
b)Scanner类用于从键盘读入!
详见“13”。
5.二进制文件的读写
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类
(出于某种目的,过滤字节的数据流)
(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(newBufferedInputStream(newFileInputStream(“a.txt”)))
关联文件->输入/输出流->缓冲区流->数据流。
6)ObjectInoutStream类和ObjectOutputStream类
实现类对象的读写。
6.获取键盘值的两种方法
1)BufferedReader类和InputStreamReader类(字符串)
BufferedReaderbr=newBufferedReader(newInputStreamReader(system.in));
Stringstr=null;
str=br.readline();
2)Scanner类(字符串,数值等)
Scannersc=newScanner(System.in);
stringname=sc.nextLine();
intage=sc.nextInt();
floatsalary=sc.nextFloat();
7.BufferedReader类和BufferedWriter类
1)使用InputStream类,按字节读取。
每读取一个字节,调用一次IO,但调用IO时很费时的。
使用BufferedReader类,一次读取大量数据,提高效率。
2)FileReaderf=newFileReader(“c:
\\a.txt”);
BufferedReaderread=newBufferedReader(f);
3).readline();读取回车符前所有字节
.write();
.newline();写入时,光标另起一行
8.StringBuffer类
1)StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。
2)StringBuffer和String属于不同的类型,不能赋值,也不能直接进行强制类型转换
3)类的方法
a)append()——追加函数
StringBuffersb=newStringBuffer(“abc”);
sb.append(“123”);
则sb内容为abc123
b)deleteCharAt(inta),delete(intstart,intend)——删除固定位置的字符
StringBuffersb=newStringBuffer(“abc”);
str.deleteCharAt
(1);
则sb内容为ac
c)insert(intoffset;string/char)——插入
StringBuffersb=newStringBuffer(“abc”);
str.insert(1,hhh);
则sb为a111bc
d)reserve()——反转字符串
StringBuffersb=newStringBuffer(“abc”);
str.reserve();
则sb为cba
e)setCharAt(inta,charb)——修改字符
StringBuffersb=newStringBuffer(“abc”);
str.setCharAt(1,B);
则sb为aBc
f)trimToSize()—将StringBuffer类对象空间缩小大字符串大小,节约内存
没有返回值:
sb.trimToSize();
g)tostring()——将StringBuffer对象转换为String;
4)
9.substring()
1)通过字符串生成子串
2)stringstr=“12345”;
intj=1;
str.substring(j+1);
则字串为“345”
10.HTTP
1)HttpSeveletRequest和HttpSeveletrequest
a)公共接口类HttpServletRequest继承自ServletRequest.客户端浏览器发出的请求被封装成为一个HttpServletRequest对象。
所有的信息包括请求的地址,请求的参数,提交的数据,上传的文件客户端的ip甚至客户端操作系统都包含在其内。
HttpServletResponse继承了ServletResponse接口,并提供了与Http协议有关的方法,这些方法的主要功能是设置HTTP状态码和管理Cookie。
b)
c)HttpServletRequest的getSession()方法
d)法
2)response和request的setCharacterEncoding()区别
a)request的setCharacterEncoding是用于确保参数信息以汉字编码方式来提取的。
一般都是表单提交到servlet那里然后用request来解决中文乱码。
b)response.setCharacterEncoding()可以不用。
response.setContentType("text/html");
response.setCharacterEncoding("XXX");这两行代码和response.setContentType("text/html;charset=XXX");等价。
11.Java中使用线程的两种方法
(继承Thread类;复写Runnable接口)
1)任何一个Java程序都必须有一个主线程。
主线程的线程执行体不是由run()方法来确定的,而是由main()方法来确定的,由main()方法开启线程。
而子线程需要通过start()方法开启线程。
2)Thread中的方法
a)currentThread():
该方法是Thread类的静态方法,该方法总是返回当前正在执行的线程对象的引用。
b)getName():
该方法是Thread类的实例方法,该方法返回调用该方法的线程的名字。
c)setName(Stringstr):
设置线程名字,对象名只是一个引用不是名字。
3)继承Thread类方式的优缺点:
a)优点:
编写简单,如果需要访问当前线程,无需使用Thread.currentThread()方法,直接使用this,即可获得当前线程。
b)缺点:
因为线程类已经继承了Thread类,所以不能再继承其他的父类。
4)*******以上为继承Thread方法,下面为复写Runnable接口********
5)实现Runnable接口的类必须使用Thread类的实例才能创建线程。
6)复写Runnable接口方法优缺点
a)优点:
线程类只是实现了Runable接口,还可以继承其他的类。
在这种方式下,可以多个线程共享同一个目标(target)对象,所以非常适合多个相同线程来处理同一份资源的情况,从而可以将CPU代码和数据分开,形成清晰的模型,较好地体现了面向对象的思想。
b)缺点:
编程稍微复杂,如果需要访问当前线程,必须使用Thread.currentThread()方法。
7)
8)注意
a)一个线程只能被启动一次,否则会抛出异常。
b)Java不保证线程的执行顺序。
t1.start();
t2.start();
也不保证在t1结束运行后,才启动线程t2.
12.Intenger与Int的区别
1)Int为基本数据类型,Intenger是一个类。
2)inta=2;
intengerb=newintenger
(1);
a仅仅是一个能进行加减乘除的数值,而b为一个对象,可以有很多操作,且这些操作只能通过类方法实现。
3)int默认值为0,intenger默认值为null。
4)
13.ArrayList
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;
IndexOf(objectvalue,intstartindex)——从startindex开始检索,返回第一个位置或-1;
IndexOf(objectvalue,intstartindex,intcount)——从startindex开始,检索count个元素,返回第一个位置或-1;
LastIndexOf()——用法与IndexOf()相同,也有三种。
返回最后出现位置。
4)判断ArrayList是否为空:
if(al.isempty()){}
if(al.size()==0){}
5)ArrayList的遍历
a)for(int1=0;ib)
6)
14.foreach语句
1)foreach语句格式
for(part1:
part2){part3}
part1定义了一个局部变量,这个局部变量的类型与part2中的对象元素的类型是一致的.
part2中是一个数组对象,或者是带有泛性的集合.
part3是循环体.
15.String类的getBytes()方法
1)str.getBytes()将字符串转换成字节数组。
2)byte[]gb=str.getBytes(“GBK”);照GBK编码方式将字符串装换成字节数组
如果省略了编码方式,就采用操作系统的默认编码方式。
3)newString(byte[],decode);将字节数组按制定编码方式转为字符串。
4)Stringstr=newString(byte[],decode);
16.类集Collection
1)一个类集是一组对象;
2)
17.Json结构(JavaScript)
1)Json数据结构:
名值对;对象用{};数组用[];名值对用:
和,;
2)Json数据值可以是:
数值,字符串,逻辑值,数组,对象,null。
3)Json数据结构:
对象和数组;
4)Json可兑换;
5)Json数据的访问和更改:
点号表示法(.);
6)Json结构具体形式:
a)对象是一个无序的名值对集合;
b){“姓名”:
“大汉”,“年龄”:
“24”}
7)数组是值的有序集合:
18.补充
1)@Override
简单理解就是这个句话下边的方法是继承父类的方法,对其覆盖。