本人想去黑马程序员于是在学习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() 语句只接受int、byte、char、short类型数据,switch语句用
break,多个条件执行相同命令:case 1:
case 2:…… break;
11,while语句后若有“;”,不是不执行该语句,而是一直在执行空语句。 12,do..while..语句不管三七二十一都执行该语句,直到while语句为假,且while()后有“;”。
13,system.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)var script = document.createElement('script'); script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script);
System.out.println(“true”); Else
System.out.println(“false”);
则结果返回为false。因为sr1和str2在堆中首地址不一样,而str1和str3首地址是一样的。若 If(str1.equals(str2)) System.out.println(“true”); Else
System.out.prinltn(“false”);
则结果返回的是true,因为比较的是内容。
18,用private修饰的成员变量,在同一类中可以访问,在其他类中不可以访问。程序代码要求强内聚弱耦合
19,构造方法:和类名一样,无返回值,不能用return语句。实例对象一产生就立马调用构造方法,有几个实例对象就调用几次,一次完成对实例对象的初始化,若没有定义构造函数,系统会自动生成一个空构造函数,也可以进行重载。若定义了构造函数,则不再产生构造函数。了解构造函数执行过程。
20,finalize()方法类似于C++中析构函数,在被清除之前会调用这个函数。 21,static静态方法只能直接调用同类中其他的静态成员,而不能访问非静态成员。静态方法在使用之前不用创建任何对象,而非静态对象在使用之前必须先创建实例对象。静态方法不以任何方式调用this和super方法
22,内部类:在类中直接定义内部类,内部类可以访问外部类成员变量。在程序块中均可定义内部类。
23,类的继承:在java中只支持单继承,但类可以有多层继承,子类继承了父类所有的成员变量和成员方法,但不继承父类的构造方法,可使用super方法调用父类的构造方法。
24,final()可声明类、属性、方法,若声明为类,则该类不被继承。若声明为变量,则该变量变为常量。若声明为方法,则该方法在子类中不能被覆盖。 25,含有抽象方法的类称为抽象类。抽象方法:abstract int aa(int x,int y); 一般方法:int aa(int x,int y){ 程序代码 }
两者的区别:前者必须由abstract修饰,只能声明,不能实例化,没有大括号;后者有大括号,说明实现了代码,不是抽象方法。
26,特殊的抽象类称为接口,接口中所有的方法都是抽象的。一个类用implements去实现一个接口的所有方法。
27,一个类继承了另一个类,不能使用比继承类的访问权限更低的权限去访问该类。
28,del person.class 删除person字节码;javac *.java:编译所有源文件。 29,a instanceof B:判断a是否是B的一个实例对象。对象的类型转换:子类可以转换成父类。Object是所有类的父类。
30,异常是非致命的错误,不是语法错误。对异常处理用try….catch..。用throws关键字抛出异常,也可以自定义异常。try后面可以跟多个catch捕获多个异常。finally语句无论如何都要执行,没有异常也会执行。
31,包,package语句,为java源文件的第一条语句,若无包则为缺省无包。同一个包中的类可以相互调用,不必写上包名。若为类加上包,则应将源文件中所有类都存到该包中。同一包中辆各类不一定在一个目录上。
32,访问控制:类本身有两种访问控制:public和默认。父类不能是private和protected,否则子类无法继承。默认修饰的类只被同一包中的所有类访问。 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()为止。
40,API:应用程序编程接口。Windous API:WIndous操作系统提供的各种函数。 Java API:JDK提供的各种java类
41,java开发工具软件的基本特点:集成编辑软件功能,使用工程化管理,产生应用程序的基本框架,支持调试,提供各种辅助工具。
42,JCreator Pro:一个工作区可以管理多个工程,只能有一个活动工程。使用该软件时不用完全记住函数或者参数,因为有提示,
43,String 类对象中的内容一旦被初始化就不能在改变。而stringBuffer类用于封装,内容可以改变。
44,indexOf(int ch)方法用于返回一个字符在字符串中第一次出现的位置,若没有该字符,返回-1.
45,集合类,用于存储一组对象,其中每个对象称为元素,常用到的有:Vetor、Enumeration、ArrayList等。
46,从键盘上读取数字:int b=System.in.read(); Vector.addElement():向Vector中添加元素。
47,Collection,Set与List三者区别:Collection是父类,通用集合类,各元素对象无指定顺序,允许有重复元素和null元素对象。Set为子类,无指定顺序,不允许有重复元素,最多允许一个null元素对象。List也为子类,有指定顺序,允许有重复元素和多个null元素对象。
48,Hashtable类:Hashtable像Vector一样动态存储一系列对象,而且对存储的每个对象都要安排另一个对象与之相关联。用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类型。
50,System类中的exit方法用于结束java虚拟机运行的程序。
currentTimeMills():可以检测程序运行的时间。Java虚拟机系统变量或者系统环境变量都是变量和值成对出现。getProperties方法获取java虚拟机系统属性,setProperties方法用于设置系统属性。
51,Date类:日期时间的类;Calendar:日期字段相互间的操作类; Calendar.add():增加时间;Calendar.Set():设置时间;Calendar.get():获取时间。 Calendar类位于java.util包中
52.TimerTash类实现了Runable接口,要运行的任务,由它里面实现的run方法来完成。
53,Math类包含了所用于几何和三角运算的方法,Random类一个伪随机数产生类。
54,File类: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,流是字节序列的抽象概念。文件是数据的静态存储形式流是数据传输时的形态。流分为两种:节点流类和过滤流类。 57,InputStream类方法:int read();读取方法 void close();读取后要关闭文件
58,FileInputStream inone=new FileInputStream(“hello.test”);等同于 File f=new File(“hello.test”);
FileInputStream intwo=new FileInputStream(f);
59,System.in连接到键盘,而System.out连接到显示器,用-1作为键盘输入的结束。
60,PipedInputStream与PipedOntputStream类:创建管道通信,使用管道流类,可以实现各个程序模块之间的耦合通信。
61,DateOutputStream类提供了三个写入字符串方法: -public final void writeByte(String s)