看尚学堂视频Java学习笔记

//这是我刚接触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中的的属性应配置成reloadable="true"
   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中:  /myfirstservlet(绝对路径)
               这里的"/"表示webapp的路径;
   index.html中:

(绝对路径)
                 这里的"/"表示域名的路径;
                 (相对路径)

67 Servlet生命周期:
   加载 ClassLoader
   实例化 new(在客服端请求第一次过来时;)
   初始化 init(ServletConfig)(tomcat会在适当时间调用)
   请求处理 service->protected service->doxxx(多线程的,线程池中找闲着的线程来处理;)
   退出服务 destroy()当tomcat关闭,等原因造成tomcat重新加载时;

68 String str = new String(getServletConfig().getInitParameter("name").getBytes("ISO-8859-1")
   , "gbk");    //字符编码转换;

69 Map的方法entrySet(),返回值为: Set>
   返回此映射中包含的映射关系的 set 视图。

70 tomcat启动: catalina start; catalina stop; catalina debug -->run(跟踪后台)

71 Cookie的特点: 服务器可以向客服端写内容; 只能是文本内容; 客服端可以阻止服务器写入; 只能拿自己
   webapp写入的东西; Cookies分两种,属于窗口(存放在内存中),属于文本(有生命周期); 一个servlet/jsp
   设置的cookies能被同一路径下面或子路径下面的servlet/jsp读到, 而父路径不能读子路径的Cookies;

72 Cookies: 服务器端写在客服端,长度有限制,只能是文本;
   Session: 写在服务端,有个Session ID号,在通过Cookies把ID号写到客服端; 跟路径无关,跟窗口有关;
   有父子关系的窗口都访问同一个Session对象;
   可以通过URL重写来解决Cookies被禁用的问题;

73 符合j2ee标准的web-app的目录结构:
   根目录下有:
   WEB-INF 
        -> classes
 ->web.xml
 ->lib

74 /的含义
 form
 form提交中action的路径可以为虚拟路径,
 也可以为绝对路径,/代表http://127.0.0.1/

 web.xml
 web.xml中url-pattern为webapplication根路径,/代表http://127.0.0.1/Test/

   forward中 "/"表示wapp的根路径;

75 乱码
   场合:页面本身有中文的时候
    解决办法:servlet:resp.setContentType("text/html;charset=gbk");
   Jsp: <%@ page contentType="text/html;charset=gb2312"%>
    注意:一定要写在PrintWriter out = resp.getWriter();之前
   场合:解决get方式乱码问题:
 解决办法:修改server.xml (在8080出加) URIEncoding="GBK"
   场合:解决post方式提交内容的乱码
 解决办法:request.setCharacterEncoding("GBK");
 注意:一定要写在存取第一个参数之前 
 不要调用response.setCharacterEncoding("GBK");
   场合:,url地址包含中文参数
 解决办法:<%request.setCharacterEncoding("GBK");%>
 注意:
   总结: 首先修改server.xml (在8080出加) URIEncoding="GBK"
         然后在开头加上<%@page contentType="text/html;charset=gbk"%>和
                       <%request.setCharacterEncoding("gbk");%>

76 在Servlet中最好不要使用成员变量;

77 mysql命令:
   create database xxx; 创建一个xxx数据库
   use xxx; 进入xxx数据库
   create table xxx; 创建一张xxx表...以"("开头, 中间用","分开,以");"结尾
   show databases; 查看数据库 show tables; 查看表 desc xxx; 显示xxx表中的属性;
   select * from stud order by sno desc limit 1,2; (查找stud中第一条后数两条的结果)

   create table article
   (
   id int primary key auto_increment,
   title varchar(14)
   );
   创建一个主键(id)递增的表;
  
   select now(); 显示当前时间
   select date_format(now(), '%y-%m-%d %h:%i:%s'); 修改时间显示格式
  
   启动服务: net start mysql
   登入mysql: mysql -uroot -p

78 在Servlet中使用Bean和在通常程序中使用Bean类似:
   属性名称第一个字母必须小写,一般private,比如:private productId;
   一般具有getxxx and setxxx;
   要具有一个参数为空的构造方法;
   但Bean不应具有GUI表现;
   一般是用来实现某一业务逻辑或取得特定结果;

80 <%! %>中声明的变量,方法都只有唯一的一份(成员变量);
   <% %>可以放java程序代码;
   <%= %> =后面必须是字符串,或能装换成字符串的表达式(不能有分号). 相当与"out.println();"
   <%@page/include/taglib  %>
   如:  <%= "HelloWorld!" %> 与 <% out.println("HelloWorld"); %>功能相同
   <% %>中的代码要加分号, 其他的都不要.

81 <%//....%>:单行注释; <%/*.....*/%>:多行注释; <%--  --%>:服务器端的注释;
   :HTML注释,这里面注释java代码的内容会被服务器端执行到;
   javascript:是在客服端执行; <% %>: 是在服务器端执行;

82 Directive--page:
   <%@page language=“script language”|  //默认为java语言
   extends=“className”|
   import=“importList”|
   buffer=“none|kb size”|   --none:不缓冲,默认8k
   session=“true|false”|   --是否可以使用session,默认true
   autoFlush=“true|false”  --缓冲器是否自动清除,默认true
   isThreadSafe=“true|false”|  --默认false(永远不要设成true)
   info=“infoText”|    --任何字符
   errorPage=“errorPageUrl”|    //把错误集中处理;
   isErrorPage=“true|false”|    //当前页面是一个统一处理错误的页面;
   contentType=“contentTyepInfo”| 
    pageEncoding=“gb2312”
   %>

83 Jsp的9个内置对象:
   request  用户端请求,此请求会包含来自GET/POST请求的参数   
   response  网页传回用户端的回应   
   pageContext  网页的属性是在这里管理   
   session  与请求有关的会话期   
   application  servlet正在执行的内容   
   out  用来传送回应的输出   
   config  servlet的构架部件   
   page  JSP网页本身   
   exception  针对错误网页,未捕捉的例外

84 静态包含:
   编译前就已经包含起来了,包含起来再编译; 不能传参数; 两个页面共用一个resquest;
   且两个contentType要相同; 两个页面的标签不要重复了;
   :最远原则;  : 就进原则;

85 动态包含:
   可以传参数; 产生两个class文件;(被包含的只有到被执行到时才转换成Servlet) 两个request是不同的对象,
   但被包含的页面可以取包含它的页面的参数,并添加自己的参数; 但包含页不能取被包含页的参数;
   只有客服端的请求过来了才会被编译. "/"表示ip地址;

86 sendRedirect转向,response.sendRedirect(xx.jsp); 等于是先访问一个jsp,然后转向,等于又再ie中输入xx.jsp
   再点转到; (转向后,原来那个页面的东西还会继续执行下去.) 可传参数,但取不到前一个页面的参数;

   jsp:forward转向: 在服务器内帮你转换,地址没变化; 可以取上一个页面的参数(request是不同的对象);
   forward后面的语句不会再被执行到; "/"表示wapp的根路径;

87 jsp中使用javabean:
   相当于 <% CounterBean cb = new CounterBean(); %>
   相当于 <%cb.setCount(Integer.parseInt("23"))%>
   相当于 <%out.print(cb.getCount())%>

88 value='<%= request.getParameter("ietmID") %>' 与 param="ietmID"  前者为单引号"'"
  
   一个汉字在utf-8中的编码是3个字节; 在gbk中是2个字节; 1个iso8859-1变成2个字节的utf-8
   getContextPath() 得到的是: /my

89 sta.executeUpdate("updata article set isleaf = 1 where id =" + id);
   更新数据库中isleaf为1, 在id=id处;

90 ResultSet rs = sta.executeQuery("select count(*) from article where pid=" + pid);
   这句sql语句的作用是: 返回数据库中pid=*的所有记录,并记载一个新的字段中..

91 提交到自己页面: 在form中加个隐藏的,然后判断;
   PreparedStatement psta = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); //注意;
   ResultSet rsKey = psta.getGeneratedKeys();

92 select * from article where pid = 0 order by pdata desc limit 0,5
   按pdata排序, 显示从0开始的后5个;
  
93 BBS总结:
  -->js;
  sta.executeUpdate("update article set isleaf = 1 where id = " + id);  sql语句的使用;
  "select * from article where pid = 0 order by pdata desc limit " + start + ", " + pageSize;
   //order by pdata desc: 按pdata排序, limit 0,3:分页(从第0个开始的后3个;)
   οnchange="document.form1.submit()  // js;
   java,html,js混合使用;

94 Directive(编译指令):
   <%@ Directive 属性="属性值" %>
   常见的有: page, include, taglib
  
   Action(动作指令):
   常见的有: jsp:useBean       , jsp:include, jsp:forward, jsp:plugin
               jsp:getProperty                   jsp:param    嵌入applet
               jsp:setProperty

  jsp:param用来设定include文件时的参数和对应的值

  和编译指令include的区别
  include编译指令是在JSP程序的转换时期就将file属性所指定的程序内容嵌入,然后再编译执行;而include指令在转换时期    是不会被编译的,只有在客户端请求时期如果被执行到才会被动态的编译载入
  Include不能带参数, 而可以

95 jsp中的javabean不能使用裸体类, 规范要求;

96 的作用,

97 如果mysql安装时选的是utf-8,在后台使用sql语句时要加: set names gbk;
   因为默认mysql会认为输入的sql语句也是utf-8编码;

98 show create table article:
   查看表article的具体信息;

99 去除MyEclipse的黄线: General-->Editors-->Text Editors-->Spelling;


      Start: 100
01 可以通过修改fckconfig.js和fckeditor.js来改变FCKeditor的"样式".

02 String url = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort();
   url += request.getContextPath();  //这两个路径前面有带斜杠;(mybbs)
   url += request.getServletPath();  //这两个路径前面有带斜杠;(index.jsp)
   url += request.getQueryString() == null ? "" : "?"+request.getQueryString(); //后面的参数;

03 正则表达式:
    (在Pattern中都有)
   .表示一个字符; /d表示一个数字; [...]匹配中夸号中的一个;
   正则表达式中"//"表示一个字符'/'
  
   *表示0个或多个
   分组用(), 第一个"("表示第一组,第2个表示第二组,以此数下去;

04 3层架构, jsp页面将不再连接数据库, 由业务逻辑层(javabean)来负责与数据库的交汇.
   3层即: 显示层,业务逻辑层,数据库层;

05 单例模式顾名思义,就是只有一个实例。
  作为对象的创建模式[GOF95], 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实      例。这个类称为单例类。

06 factory method: 比如单例;
   simple factory: 直接定义class factory;
   abstract factory: 都定义为接口;

07 javascript:document.forms[0].submit() :表示把所有的form作为一个数组拿出,forms[0]表示第一个form;

08 response.setHeader("Cache-Control", "no-store"); //HTTP1.1
   response.setHeader("Pragma", "no-cache"); //HTTP1.0
   response.setDateHeader("Expires", 0); //prevents catching at proxy server
09 javascript技巧:
   投票

你可能感兴趣的:(J2SE)