//这是我刚接触java时做的笔记, 后面也没去整理, 可能其中有些理解有误, 仅供参考!!!
1、java中一个英文字母或一个中文汉字都是2个字节来存储.如:(char是16bit)
2、"+"中的任何一端为字符串类型时,另一端会自动转换成字符串类型,如: 22+"22",结果为2222
而与字符型数据相加时,字符型数据转换成整形数据,如:6+7+'A',结果位 78 6+7+"A" ,结果为13A
3、三元运算中,如果前面的表达式为True,则不计算后面的表达式的值, 如:....Three.Java
短路运算中,&&如果前面为假,则不计算后面的表达式.
||如果前面为真,则不计算后面的表达式.
4、Tab与Shift+Tab
5、do{....} while(....);最后有个分号
6、if语句后面一定别加分号
7、在witch语句的case语句后面一定要有个break;语句,否则会穿透;
8、面向过程与面向对象
面向对象的设计思想:你不该去考虑实现一件事的具体步骤,
而是考虑实现这个事情时,都有什么类,这些类都要什么参数,这些类之间 都有什么关系,定他 们的方法
9、每一个变量都是:先声明、再赋值、然后才能使用、
10、局部变量Java没有默认的初始化,
成员变量在没赋值时,默认的初始化为"0".
11、我们的语言:成员变量 = 属性;方法 = 函数
12、形参和局部变量一样,都存放在栈内存中
引用变量:首先在栈内存中有一块存储空间,指向堆内存中(堆内存中存放 变量中的参数,通 过栈内存可以找到堆 内存中的变量值)
13、构造方法,和类重名,没有返回值;
当没有指定构造方法时,,编译器为类自动添加形如:类名( ) { } 的构造方法,
14、静态变量、字符串常量 放在data segment中。
15、static声明的方法,即:静态方法中不再是针对某个对象调用,所以不可以访 问非静态的成员.
非静态方法 必须 是针对某个对象调用.
16 如果你要把一个类放包里,在开头
你编译的文件必须放正确的目录里.
如果你想要在别处用这个类,必须把包的名写全了.(可以引入:import 包 名.*)
class文件的最上曾包的父目录位于classpath下.
执行一个类也需要把目录写全
17 子类拥有父类中private的变量,但没有访问权.
class只能用public和default(省列)来修饰
18 重写时,两个方法完全相同,最好是直接复制父类的方法.
19 继承中的构造方法:
子类中的构造的过程 必须 调用其父类的构造方法;
子类可以使用super(参数)来调用父类的构造方法;
使用this(参数)可以调用当前类的另外的构造方法;
如果用super,必须写在子类构造方法的第一行;
如果子类的构造方法没有调用父类的构造方法,则系统默认调用父类中没有参数的那个构造方法;
如果子类的构造方法没有调用父类的构造方法,而父类中又没有不带参数的构造方法,则编译出错;
20 一个源文件中最多只能有一个public类,而且文件名必须与public类的类名相同;(包括大小写);
21 声明为long类型时,必须在后面家 l 或 L ,否则会出错,如:(整型数据默认为int型);
long i = 888888888L;//必须在后面加个 l 或 L .
同理,需要生命已个float的浮点型数据时,要在其后加 f 或 F .(浮点型数据默认为double型);
22 数据类型按容量由大到小排序为:
byte,short,char-> int -> long -> float -> double.
byte,short,char三者不会相互转换,他们在计算机中计算时,首先会被转换成int型;
排序规则为:"小转大,自动;大转小,强制." 大转小时可能会溢出,要小心/.
但可以把整型常量直接付值给byte,char,short,而不需要进行强制类型转换,只要不出超出范围即可.
23 Java中调用方法: 对象名.方法名(实参);
类的定义: 成员变量 + 方法.
24 各种变量的存放位置: ppt第22张..
25 使用 new + 构造方法 创建一个新的对象;
构造方法是定义在Java类中,用来初始化对象的一个方法;
当没有指定构造方法时,编译器自动为类添加形如: 类名() { } 的构造方法..(ppt77)
26 构造方法 //:.. 构造方法也可以重载.
方法的重载//.. 以定义有 相同名字 ,但 参数不同 的多个方法.
方法的重写//.. 方法的重写必须和 被重写的方法 具有 相同的名字,参数,返回值类型 .
继承中的构造方法//.. ppt119...子类的构造方法 必须 调用父类的构造方法,
27 个权限的范围,ppt115
28 this(参数),,调用了自己类的另外一个构造方法. (教程31.练习)
29 java -version ..查看当前使用的java的版本.
jar vcf xx.jar xx(路劲) 把文件夹xx中的所有内容打包成.jar文件.
30 object类,,它是所有类的跟点,,所有类从它继承.
equals类,,两空值进行比较永远返回 false.
Java中对 String类 中的 equals方法进行了重写.
用 引用变量 instanceof 类,,来判断引用变量所指向的是否属于instanceof后面的类.
31 编写时注意 "=" 和 "==" ,,别老是想写等于,却写成
32 对象的转型,,父类的引用变量可以指向一个子类的 对象 ,但不可以访问子类中新增加的成员(方法和变量);
33 多态//..在执行期间(非编译期间)判断所引用类型的实际对象,根据实际对象调用其方法
1)要有方法的重写
2)要的继承
3)父类引用指向子类对象
(多态:实际new的什么类型,,就是调用哪个的方法.)
34 abstract:抽象方法
如:public abstract void enjoy(); //末尾有 分好 ,不需要大括号等..
含有抽象方法的类必须被声明为抽象类,,抽象类必须被继承,抽象方法必须被重写.
抽象类不能被实例化,,抽象方法只需声明,,而不需实现..
35 final关键字//.. final的变量的值不能被改变,,
final的方法不能被被重写
final的类不能被继承
37 interface(接口)//.. 接口中声明的变量默认为 public static final 的,也只能是 public static final的.
如: 在接口中定义 public static final int i; 和 int i; 是一样的,,都是 public static final 类型的.
接口中只能定义抽象方法,,而且默认为public的,也只能是public的,,省列了public不写也是public的
接口可以继承其他接口,,并添加新的属性和抽象方法.
public interface Valuable(定义一个接口) implements
38 异常//.. try {...语句...
} catch(ArithmeticException ae) {
...语句...}
39 数组要先定义, int[] n;
然后再new, n = new int[5]; //这里的5是数组元素的个数,,即数组的长度,,非下标..
最后才能赋值. int[3] = 3;
40 二维数组//.. 在调用arraycopy方法之后,,用于存放数组的那个二维数组的m[i].length与被复制的那个数组的m[i].length相同.
41 String类//.. 下标是从0开始的,,
方法public int indexOf(String str,int fromIndex),,是从第fromIndex开始,,str在数组中的位置
public String substring(int beginIndex,int endIndex),,返回值不包含enIndex本身,,
42 流//..节点流就是最基础的"管道",,处理流就是包装在外面的"管道"..
使用构造方法FileOutputStream(String s)时,,如果没有那个文件,会自动创建..
43 new FileOutputStream(" ",true);可以接下去继续写入,,以前的东西不会被覆盖掉..
44 写入一个随机数:Math.random()
忽略大小写比较:equalsIgnoreCase()
在使用Data..Stream时,,要遵循先进先出(队列);
InputStreamReader(System.in);
关键字:transient,,当系列化一个类时,,使用transient修饰的变量被透明(即不会被读入);
serializable接口,,需要系列化的类都需要实现此接口,,这个接口是个标志接口,,(没有定义方法);
externallizable接口,,实现此接口可以自己定义类怎么被系列化;;
45 cpu在某一个时刻是但进程的...
46 线程//..启动线程一定要调用Thread类中的start()方法,,
直接调用继承runnable类重写的run()方法,,这只是方法的调用,,是单线程;
在哪个线程中调用Thread.sleep()方法,,就是让哪个线程进入睡眠..
在sleep的线程被打断时,,会抛异常;;
run()方法一结束,,线程就结束;
synchronized锁定当前对象;;如:public synchronized void add() 锁定当前执行该方法的对象;
synchronized (this){ } 执行{}中的代码时,锁定当前对象..
47 wait()是锁定在当前线程的对象停止;;当wait时,,释放锁(跟sleep不一样)..
或说是导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法
notify(); 唤醒在此对象监视器上等待的单个线程。
48 BorderLayout是Frame的默认布局方式 (分5区域);
FlowLayout是Panel的默认布局方式 (流水式的);
GridLayout(3,4) 网格布局方式 (3行4列);
49 ppt中的错误之处
(1) ppt115中的defaut权限,,子类可以访问
(2) ppt119最后一点写的不全面,,当没有构造方法时,,会自动创建一个无参数的构造方法;
应该表达为,,当一个类中有构造方法,,但又没有没有参数的构造方法,在其子类中的构造方法中如果没有调用一个已有的
构造方法,,编译出错;
50 数组用length String用length();
51 得到绝对路径;getAbsolutePath();
52 int hashCode()返回此 collection 的哈希码值。当 Collection 接口没有为 Object.hashCode 方法的常规协定添加任何约 束时,为了满足 Object.hashCode 方法的常规协定,程序员应该注意任何重写 Object.equals 方法的类必须重写 Object.hashCode 方法。需要特别指出的是,c1.equals(c2) 暗示着 c1.hashCode()==c2.hashCode()。
53 IO流
节点流:FileInputStream FileOutputStram FileReader FileWriter
处理流:
缓冲流.BufferedInputStram BufferedOutputStram BufferedReader (有readLine()方法) BufferedWriter
转换流.InputStreamReader(可以从键盘输入) OutputStramWriter
数据流.DataInputStream DataOutputStream
打印流.printWriter printStream (都是输出流,,有自动flush功能);
Object流.ObjectInputStram ObjectOutputStream
transient(关键字,,透明化) serialiable(可以被系列化的) externalizable(如果要控制系列化过程,实现此接口)
54 Thread类
静态方法:public static Thread currentThread() 返回对当前正在执行的线程对象的引用。
关键字: synchronized(锁定当前对象) interrupt()(中断线程)
55 toByteArray()对到ByteArrayInputStream()的那个数组; setEchoChar(char c);设置回显字符;
setEditChar(booleam b);设置是否可编辑; public void paint(Graphics g)绘制此组件。
public abstract class Graphics public Object getSource() 最初发生 Event 的对象
56 eclipse的常用快捷键
Ctrl+/ 说明:添加/消除//注释,在eclipse2.0中,消除注释为Ctrl+/
Ctrl+Shift+F 说明:自动格式化代码
Ctril+F6 说明:界面切换
Ctril+Shift+O 说明:自动引入所需要得包
Ctril+Shift+M 说明:查找所需要得包
alt + /
ctrl + shift +/ 注释代码块;
57 当一个float或double的数除以0,,结果为:Infinity
而int,long去除,,报错,,"by zero"
子类继承父类,,不能使用比父类更严的修饰符;
public final class String"String这个类是final的,,不能被继承".
System.currentTimeMillis() 返回以毫秒为单位的当前时间
58 内部类可以非常方便的使用其外部包装类的方法或变量;
双缓冲,,
常量名一般用大写(定义为常量,,易于以后的更改,,而且一般都是public static final的)
Image createImage(int width, int height 创建一幅用于双缓冲的、可在屏幕外绘制的图像。(Component)
59 持有对方的引用,,可以在构造方法中构造;
60 [java.awt.Rectangle] boolean intersects(Rectangle r) 确定此 Rectangle 是否与指定 Rectangle 相交
61 Java.awt.Toolkit.getDefaultToolkit();//获取默认的工具包;
getImage(Strin fileName); getImage(URL)
J2EE
62 JDBC连接数据库:
oracle数据库的连接串:jdbc:oracle:thin:@localhost:1521:xsgl
驱动串:oracle.jbcd.driver.OracleDriver
sql server数据库的连接串:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=xsgl
使用多个statement时: jdbc:microsoft:sqlserver://localhost:1433;SelectMethod=cursor;DatabaseName=xsgl
驱动串:com.microsoft.jdbc.sqlserver.SQLServerDriver
mysql数据看的连接串: jdbc:mysql://localhost/xsgl?user=sa&password=671354
驱动串: com.mysql.jdbc.Driver
String sql = "insert into stu values ('" + sno +"', '" + sname + "', '" + sxb + "',
'" + skc + "'," + scj + ")";
63 tomcat的配置:
tomcat中conf目录下的context.xml中的
serlet.xml中的8080处,应加上 URIEncoding="GBK"
64 接口Servlet,实现他的有 抽象类GenericServlet,HttpServlet
65 resp.setContentType("text/html;charset=gbk");
必须放在PrintWriter out = resp.getWriter();之前
且字符串"text/html;charset=gbk"必须是固定的写法;
66 关于路径,将以协议开头或"/"开头的称为绝对路径; 没有的称为相对路径;
web.xml中:
这里的"/"表示webapp的路径;
index.html中: