java 日记

Java学习日记

1,            一个文件里可编写多个类,一个文件里不能有两个public类。独立运行的类必须有main()函数。

2,            Print()不换行,println()打印新东西之前会换行。

3,            set classpath前后不能有空格,不能有中文符号。

4,            三种注释方法:///*…*//**….*/,/*….*/不能嵌套,注释功能有:说明程序的功能,可以取消代码,或者是回复代码。

5,            标识符:由字母、数字、下划线、美元符号组成,不能以数字、关键字开头。

6,            常量:不变的数值。有整型,长整型,单精度、双精度、布尔常量、字符常量、字符号常量。单精度常量以’f’结尾。

7,            变量就是系统为程序分配的一块内存单元,用来存储数据。变量须先定义后使用,不允许嵌套定义。

8,            低字节的类型可以转换成高字节的类型,高字节的类型不可以转换成低字节。

9,            流程控制:if若有多条语句最好用大括号括起来。问号表达式:y=x>0?x:-x;若表达式为真,结果为x,反之为-x.

10,        Switch() 语句只接受intbytecharshort类型数据,switch语句用break,多个条件执行相同命令:case 1

case 2……

break;

11,while语句后若有“;”,不是不执行该语句,而是一直在执行空语句。

12do..while..语句不管三七二十一都执行该语句,直到while语句为假,且while()后有“;”。

13system.in.read():从键盘上读取数据;

14,定义数组:int[] x int x[];arraycopy数组拷贝。

15,面向对象三大特征:封装、继承、多态。一个类中方法可以访问同类成员。若局部变量和成员变量名字一样,则成员变量隐藏。

16,一个类中方法可以访问同类的成员变量和局部变量。

17,“==”与“equals()”的区别:“==”是比较两个对象的值是否相同,而equals()是比较两个对象的内容是否相同。例如:

String str1=new String(“abc”);

String str2=new String(“abc”);

String str3=str1;

If(str1==str2)

              System.out.println(“true”);

Else

              System.out.println(“false”);

则结果返回为false。因为sr1str2在堆中首地址不一样,而str1str3首地址是一样的。若

If(str1.equals(str2))

              System.out.println(“true”);

Else

              System.out.prinltn(“false”);

则结果返回的是true,因为比较的是内容。

18,用private修饰的成员变量,在同一类中可以访问,在其他类中不可以访问。程序代码要求强内聚弱耦合

19,构造方法:和类名一样,无返回值,不能用return语句。实例对象一产生就立马调用构造方法,有几个实例对象就调用几次,一次完成对实例对象的初始化,若没有定义构造函数,系统会自动生成一个空构造函数,也可以进行重载。若定义了构造函数,则不再产生构造函数。了解构造函数执行过程。

20finalize()方法类似于C++中析构函数,在被清除之前会调用这个函数。

21static静态方法只能直接调用同类中其他的静态成员,而不能访问非静态成员。静态方法在使用之前不用创建任何对象,而非静态对象在使用之前必须先创建实例对象。静态方法不以任何方式调用thissuper方法

22,内部类:在类中直接定义内部类,内部类可以访问外部类成员变量。在程序块中均可定义内部类。

23,类的继承:在java中只支持单继承,但类可以有多层继承,子类继承了父类所有的成员变量和成员方法,但不继承父类的构造方法,可使用super方法调用父类的构造方法。

24final()可声明类、属性、方法,若声明为类,则该类不被继承。若声明为变量,则该变量变为常量。若声明为方法,则该方法在子类中不能被覆盖。

25,含有抽象方法的类称为抽象类。抽象方法:abstract int aa(int x,int y);

一般方法:int aa(int x,int y){

程序代码

}

两者的区别:前者必须由abstract修饰,只能声明,不能实例化,没有大括号;后者有大括号,说明实现了代码,不是抽象方法。

26,特殊的抽象类称为接口,接口中所有的方法都是抽象的。一个类用implements去实现一个接口的所有方法。

27,一个类继承了另一个类,不能使用比继承类的访问权限更低的权限去访问该类。

28del person.class 删除person字节码;javac *.java:编译所有源文件。

29a instanceof B:判断a是否是B的一个实例对象。对象的类型转换:子类可以转换成父类。Object是所有类的父类。

30,异常是非致命的错误,不是语法错误。对异常处理用try….catch..。用throws关键字抛出异常,也可以自定义异常。try后面可以跟多个catch捕获多个异常。finally语句无论如何都要执行,没有异常也会执行。

31,包,package语句,为java源文件的第一条语句,若无包则为缺省无包。同一个包中的类可以相互调用,不必写上包名。若为类加上包,则应将源文件中所有类都存到该包中。同一包中辆各类不一定在一个目录上。

32,访问控制:类本身有两种访问控制:public和默认。父类不能是privateprotected,否则子类无法继承。默认修饰的类只被同一包中的所有类访问。

33,进程:正在进行的程序。线程:一个程序内部的一条执行线索,每个线程上所要运行的程序代码段是多线程,用Thread类创建线程。

34,后台线程:如果对某线程对象在启动(调用start方法)前调用了setDaemon(true)方法,这个线程就变成了后台线程。只要还有一个前台线程在运行,这个进程就不会结束。如果一个进程中只有后台线程在进行,这个进程就会结束。Pp.join()的作用是把pp所对应的线程合并到调用pp.join();语句的线程中。

35,单线程和多线程的区别:必须等到run()调用后才实现

36,要实现多线程必须要编写一个继承了Thread类的子类,子类要覆盖Thread类的run方法,在子类run方法中调用正在新程序中运行的程序代码,启动一个新线程是调用Thread类的start方法,Thread类对象的start方法产生一个新线程,并在该线程上运行Thread类对象中的run方法,控制线程是否结束。

37,产生一个TestThread对象,四个tt.start()线程,共同去卖同100张车票:

TestThread  tt =new TestThread();

tt.start();

tt.start();

tt.start();

tt.start();

38,多个线程共享同一数据就会发生线程安全问题。

39,线程间的通信:wait():当前线程放弃监视器并进入睡眠状态直到其他线程进入同一监视器并调用notify()为止。

40API:应用程序编程接口。Windous APIWIndous操作系统提供的各种函数。

Java APIJDK提供的各种java

41java开发工具软件的基本特点:集成编辑软件功能,使用工程化管理,产生应用程序的基本框架,支持调试,提供各种辅助工具。

42JCreator Pro:一个工作区可以管理多个工程,只能有一个活动工程。使用该软件时不用完全记住函数或者参数,因为有提示,

43String 类对象中的内容一旦被初始化就不能在改变。而stringBuffer类用于封装,内容可以改变。

44indexOf(int ch)方法用于返回一个字符在字符串中第一次出现的位置,若没有该字符,返回-1.

45,集合类,用于存储一组对象,其中每个对象称为元素,常用到的有:VetorEnumerationArrayList等。

46,从键盘上读取数字:int b=System.in.read();

Vector.addElement():Vector中添加元素。

47Collection,SetList三者区别:Collection是父类,通用集合类,各元素对象无指定顺序,允许有重复元素和null元素对象。Set为子类,无指定顺序,不允许有重复元素,最多允许一个null元素对象。List也为子类,有指定顺序,允许有重复元素和多个null元素对象。

48Hashtable类:HashtableVector一样动态存储一系列对象,而且对存储的每个对象都要安排另一个对象与之相关联。用put()存储数据:

Hashtable ht=new Hashtable();

Ht.put(“one”,new Integer(1));

检索数据用get方法:

Integer n=(Integer)ht.get(“two”);

If(n!=null)

{

System.out.println(“two=”+n);

}

要成功检索某个字,用作关键字的类必须覆盖Object.hashtableCode()Object.equals().

49.Properties类:Hashtable类的子类,增加了讲Hashtable对象中的关键字和值保存到文件和从文件中读取关键字和值到Hashtable对象中的方法。如果要用Properties.store方法存储Properties对象中的内容,每个属性的关键字和值都必须是String类型。

50System类中的exit方法用于结束java虚拟机运行的程序。

currentTimeMills():可以检测程序运行的时间。Java虚拟机系统变量或者系统环境变量都是变量和值成对出现。getProperties方法获取java虚拟机系统属性,setProperties方法用于设置系统属性。

51Date类:日期时间的类;Calendar:日期字段相互间的操作类;

Calendar.add():增加时间;Calendar.Set():设置时间;Calendar.get():获取时间。

Calendar类位于java.util包中

52.TimerTash类实现了Runable接口,要运行的任务,由它里面实现的run方法来完成。

53Math类包含了所用于几何和三角运算的方法,Random类一个伪随机数产生类。

54File类:IO包中唯一代表磁盘文件本身信息的类,而不是文件中的内容。

File f=new File(“hello.txt”);

If(f.exist()){f.delete();}

Else {f.createNewFile();}

System.out.println(“File name:”+f.getName());获取文件的名称

System.out.println(“File path:”+f.getPath());获取文件的路径

System.out.println(f.exist()?”exist”:”not exist”);判断文件是否存在

55,RandomAccessFile类提供了众多的文件访问方法;RandomAccessFile类支持随机访问,但是不能访问其他的Io设备,如网络、内存映像等。

两种构造方法:

new  RandomAccessFile(f,”rw”);可以读写

new  RandomAccessFile(f,”r”);只读

56,流是字节序列的抽象概念。文件是数据的静态存储形式流是数据传输时的形态。流分为两种:节点流类和过滤流类。

57InputStream类方法:int read();读取方法

void close();读取后要关闭文件

58FileInputStream inone=new FileInputStream(“hello.test”);等同于

File f=new File(“hello.test”);

FileInputStream intwo=new FileInputStream(f);

59,System.in连接到键盘,而System.out连接到显示器,用-1作为键盘输入的结束。

60PipedInputStreamPipedOntputStream类:创建管道通信,使用管道流类,可以实现各个程序模块之间的耦合通信。

61DateOutputStream类提供了三个写入字符串方法:

-public final void writeByte(String s)

-public final void writeChars(String s)

 

-public final void writeUTF(String s)

62ObjectInputStreamObjectInputStream用于从底层输入流中读取对象类型的数据和将对象类型的数据写入到底层输出流。

63,避免频繁地在字符与字节间进行转换,最好不要直接使用InputStreamReaderOutputStreamWriter类读写数据,应尽量使用BufferedWriter类包装OutputStreamWriter类,用BufferredReader类包装InputStreamReaderInputStreamrReaderOutputStreamWriter用于将字节转换成字符流来读写的两个类。

63,读取一行文本用BufferredReader

64printStackTrace()用于将异常信息打印在标准输出设备上。

65AWT:应用窗口工具集;GUI:图形用户界面。

66,将窗口从内存中显示出来用Frame.setViseble(true);

Frame.setSize(int x,int y);设置窗口大小

Frame.add(new Button(“OK”));增加一个新按钮

67GUI:包括基本组件和容器。Frame.dispose()将窗口对象释放,但线程消失,而Frame.setVisible(false);窗口不显示但程序没有结束。

68,事件适配器:事件监听器接口的最简单的实现类,称为Adapter

69,调用enableevents(long eventsToEnable))方法,可以在即使没有注册事件监听器情况下,组件也能够对某些类型的时间进行响应和产生相应的事件对象。

70GraPhics类与图形绘制有关。GraPhics.draw String()方法的坐标参数是左下面,这和其他的坐标在左上方是不一样的。

71,设置图形颜色:GraPhics.setColor(Color.Red);颜色英文须大写

72使用GraPhics.drawImage(Image img,int s,int y,imageObserver observer)

方法显示图像。

73,与菜单相关的类:MenuBarMenuMenuItem。创建菜单的过程:先创建一个菜单条,再把几个菜单挂在菜单条上,最后在每个菜单上添加菜单项。也可以在菜单上创建子菜单。

74Container容器类,所有容器类的父类,Container.add()用于将组件添加到容器中。

75Dialog类用于产生对话框,分为模态对话框和非模态对话框两种。

76Checkbox类用来建立单选按钮和多选按钮,单选按钮和多选按钮语义事件为ItemEvent,对应的监听器接口为ItemOutstream

77panel容器类,产生空白面板,可容纳多个组件,不能独立存在。

78ScrollPane用于产生滚动窗口。

79,布局管理器管理组件在容器中的布局。

BroderLagoutNORTH WEST SOUTH EAST CENTER

FlowLagout:布局分配是从左到右从上到下

GridLagout:网格布局,模块大小完全相同,也是从左到右,从上到下

cardLagout:多个组件交替显示,只有最上面的那一个可见。

Container.setLagout(null)用于取消布局管理器

Container.setBounds(x1.y1,x2,y2)用坐标来设置组件位置

80Swing提供了丰富的GUi组件,增强了AWT中原有组件的功能。

JFCjava功能类,集合了Swing组件和其他能够开发API类。

81JFrame是与AWT中的Frame相对应的Swing组件,只能有一个唯一组件——JRootPane

82Applet:嵌套在网页中的小程序。

83,浏览器显示网页的原理和打开记事本方式一样

84Applet由浏览器来启动执行过程:1)浏览器载入HTML文件。2)浏览器载入HTML文件中引用的Applet字节码。3)浏览器启动java虚拟机执行Applet

85Applet需要覆盖的方法:init() start() stop() destroy() paint()。鼠标事件监听器: MouseListener()

86Thread.sleep(1000);语句需要捕获异常,用try…catch….语句捕获

87Applet相关知识:容器与插件的程序架构设计模式、Applet程序中的控制台输出。

88Applet程序的限制:不能启动执行其他应用程序,不能进行文件IO操作,不能调用本机代码,不能与Applet所在的主机之外的其他主机进行网络连接;

89Applet标记的详细表:

[archive=archiveList]方括号的为可选项

Code=appletFile.class不带方括号的为必选项

90OBJECT标记:使用HTMLContainerApplet标记转换成OBJECT标记。使用OBJECT标记执行Applet小程序的java解释器被作为一个ActiveX插件使用。使用OBJECT标记比Applet标记多了自动下载和安装java解释器的功能。

91,网络协议:TCP/IP UDP

92,获取本机IP地址:在命令行输入:ipcongif;端口号的范围是0-65535之间。

93TCP传输控制协议,是面向连接的通信协议

UDP用户数据报协议,是无连接的通信协议

94Socket是网络驱动层提供给应用程序编程的接口和一种机制。网络编程类位于java.net包中。

95DatagramSocket类用于UDP通信,ServerSocket类用于TCP通信的服务器端。Socket类用于TCP通信的服务器端和客户端。

96,了解DatagramSocket类三种构造方法,close()关闭方法,send(DatagramPackage p)发送数据包方法;receive(DatagramPackage p)接受数据包方法

97DatagramPackage提供了两种构造方法。getInetAddresss用于表示计算机IP地址的一个类,类中有getByName方法,返回一个相应的inetAddress实例对象。

 

98TCP网络编程工作原理,利用TCP协议进行,两个应用程序有主次之分,主的称为服务器端,另一个称为客户端。

99,客户端与服务器端交互过程:1)服务器程序创建一个ServerSocket,然后调用Accept方法等待客户来连接。2)客户端程序创建一个Socket并请求与服务器建立连接。3)服务器接受客户的连接请求,并创建一个新的Socket与该客户建立专线连接。4)建立了连接的两个Socket在一个单独的线程上对话。5)服务器开始等待新的连接请求,当新的连接请求达到时,重复步骤25.

100TCP服务器程序必须先启动运行,TCP客户程序才能连接上TCP服务器,使用Windous提供的telent程序测试服务器程序,使用BufferredReader包装类,从网络输入流中一次读取一行文本。

101,使用netstart命令查看当前正在被使用的TCP端口号。通过一个配置参数来指定TCP服务器程序所使用的端口号。

102ObjectInputStreamObjectOutputStream可以从底层输入流中读取对象类型的数据和将对象类型的数据写入到底层输出流。

103,使用ObjectInputStreamObjectOutputStream来包装底层网络字节流,TCP服务器和TCP客户端之间可以接受对象类型的数据。

104URL:统一资源定位器,由协议、主机名、端口号和资源名组成,了解相对URL和绝对URl的含义。

 

 

 

 

你可能感兴趣的:(java 日记)