1 / 24

Java 语言基础

Java 语言基础. 初级基础. 操作符和赋值. 字节运算 byte b = 3; byte c = 8; byte e = 128;//… e = ( byte )128;//e 是多少 byte d = b+c;//d 的值是多少, cast d = c+5;//nc final int x = 4; int b = x++; //b=? e int c = ++x;// c=? e. 操作符和赋值. 引用赋值 class A { public A(){ print(“A”); } }

kera
Download Presentation

Java 语言基础

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java语言基础 初级基础

  2. 操作符和赋值 字节运算 byte b = 3; bytec = 8; byte e = 128;//… e = (byte)128;//e是多少 byte d = b+c;//d的值是多少,cast d = c+5;//nc final int x = 4; int b = x++; //b=? e int c = ++x;// c=? e

  3. 操作符和赋值 引用赋值 class A { public A(){ print(“A”); } } class B extends A{ public B(){ print(“B”); } public static void main(String[] args){ A a = new A();//输出什么 B b = new B();//输出什么 } } --------------------------------------------------------------------

  4. 操作符和赋值 Instanceof 判断一个对象是否是一个类的实例 interface M{} class A implements M{} class B extends A{} A a = new A(); B b = new B(); A c = new B(); A[] d = new A[2]; 考虑下列输出……………………………………………………………………………………………………….. a instanceof A // a instanceof M b instanceof A b instanceof B b instanceof M c instanceof A c instanceof B c instanceof M d instanceof A; d instanceof ? ==true

  5. 对象引用 Java里,对象传递只有一种形式,那就是传值,当把一个对象的变量传递进方法时,我们传递的是对象的引用 class Model{ public int width = 4; public int height = 5; public static void main(String[] args){ Model m = new Model(); p(m.height); m.modify(m); p(m.height); m.setModify(m); p(m.height); x = 4; m.remodify(x); p(x); } public void modify(Model m){

  6. 对象引用 m.height = m.height+5; m.width = m.width+3; } public void setModify(Model m){ m = new Model(); m.height+=7; } public void reModify(int x){ x+=5; } static void p(Object o){ System.out.println(o); } static void p(int i){ System.out.println(i); } }

  7. 对象,集合和构造函数 构造函数:如果用户未定义,则自动创建一个默认无参构造子,如果用户定义了构造函数,则调用用户定义的构造函数 class B extends A{} class A { int size; String name; public A(int s,String n){this.size=s;this.name=n;} public static void main(String[] args){ A a = new A(); A b = new A(2,”jack”); B x = new B(); } }

  8. Object对象介绍 boolean equals(Object o) //对比两个对象是否相同 void finalize();//内存回收器回收对象前调用 int hashCode();//hash码,用于集合类 finalvoid notify();//唤醒等待该对象的线程 finalvoid notifyAll();//唤醒等待该对象的所有线程 final void wait();//让当前线程等待,直到另外一个线程在该对象上调用了上面两个方法 StringtoString();//返回代表该对象的字符串值

  9. 关于equals和hashCode 重点方法 equals 对比两个对象是否相同,java中由于不再直接操作内存地址,而是操作对象引用所以对象是否相同主要靠equals方法来对比 hashCode 代表对象的一个唯一整数 equals 返回true hashCode 一定相同 hashCode 相同,两个对象不一定equals

  10. Equals和hashCode重写的例子 class A { private int m=0; public int getM(){return m;} A (int n){m=n;} public boolean equals(Object o){ if((o instanceof A) && (((A)o).getM()==this.m)){ return true; } else return false; } } public class EqualsTest{ public static void main(Stirng args[]){ A a1 = new A(2); A a2 = new A(3); a1.equals(a2);//?? a2.equals(a1);//?? } }

  11. Equals和hashCode关系表

  12. 常用集合特征 List 这种集合是java对列表的实现,可以存放对象 有顺序存放 ArrayList 具有数组特征的集合,他主要用于对集合中对象随机访问的需要 LinkedList 具有链表特征的列表集合,它主要是针对插入删除频率高的列表访问

  13. 常用集合 Set 特征:不能存放重复的对象,鉴定方式equals,没有顺序,按照一定规则排序 HashSet 用对象的hashcode值检测对象,由于是基于hashcode的,因此查找速度快 TreeSet 具有顺序的集合,自动排序

  14. 常用集合类 Map 键值对容器,存放一个集合按照一定的顺序 根据键值取出对象. HashMap 查找快 TreeMap 自动排序 集合接口的compareTo方法 public int compareTo(Object o1,Object o2) 主要用来对集合排序,当输出集合需要按照一定的业务逻辑排序的时候,需要重写此方法

  15. 流控制语句的特点 switch语句和break语句 java的switch 语句只能接受int及其下类型的参数 试看下面代码 int x ; private seleX(x){ switch(x){ case 0:print(0); case 1:print(1); case 2:print(2); case 3:print(3); defaut:; } } x=2;seleX(x); x=3;seleX(x);

  16. Break和continue语句 break 中断过程执行 continue用在循环中,终止此次循环,继续下次循环. 没有标号的循环语句 for(int i=0;i<3;i++){ print(i); for(int j=0;j<3;j++){ print(j); if(i%2==0)continue; } } 标号的循环语句 outer: for(int i=0;i<10;i++){ while(i>7){ print(“hello”); break outer; } print(“outter loop”); } print(“good-bye”);

  17. Break和continue语句 --------------------------------------------------- 0 0 1 2 1 0 1 2 2 0 1 2 ------------------------------------------------------- hello good-bye

  18. 异常处理 一 异常介绍 JAVA语言的异常根对象是Throwable(相对的说法,因为所有JAVA对象的根都是java.lang.Object). 所有的异常都必须直接或者间接继承Throwable. Throwable 有两个子类,Error和Exception.Error通常用于严重的系统级别错误,比如IO错误、JVM底层错误等。对于应用程序,通常关注的是Exception。 JAVA将Exception分为两类,CheckedException和UncheckedException.从异常的层次来看,所有直接或者间接继承RuntimeException的异常,都属于UncheckedException.而所有直接或者间接继承Exception(这里不包含RuntimeException,所以其也是Exception的直接子类)的异常都属于CheckedException.对于抛出CheckedException的方法,JVM要求调用该方法的客户端必须显式地处理该异常(重新抛出,或者捕获它)。对于UncheckedException,JVM不作这方面的强制要求,如果调用者没有显式处理异常,则该异常将自动隐式地抛出。

  19. 异常处理程序 1 OutputStreamWriter out = ... 2 java.sql.Connection conn = ... 3 try { 4 Statement stat = conn.createStatement(); 5 ResultSet rs = stat.executeQuery( 6 "select uid, name from user"); 7 while (rs.next()) 8 { 9 out.println("ID:" + rs.getString("uid") 10 ",姓名:" + rs.getString("name")); 11 } 12 conn.close(); 13 out.close(); 14 } 15 catch(Exception ex)  16 { 17 ex.printStackTrace(); 18 }

  20. 异常声明 方法声明 public void myMethod() throws SomeException,AnyException; 语句块调用声明 try{ //可能抛出异常的操作 }catch(ExceptionA e){ //处理异常 }catch(ExceptionB e){ //处理异常 }….. 显式抛出异常 public void setName(String name){ if(name==null) throw new NameNotBeNullException(“用户名不能空”); //………………. }

  21. 常用的异常处理方式 1、处理异常。针对该异常采取一些行动,例如修正问题、提醒某个人或进行其他一些处理,要根据具体的情形确定应该采取的动作。再次说明,调用printStackTrace算不上已经“处理好了异常”。 2、重新抛出异常。处理异常的代码在分析异常之后,认为自己不能处理它,重新抛出异常也不失为一种选择。  3、把该异常转换成另一种异常。大多数情况下,这是指把一个低级的异常转换成应用级的异常(其含义更容易被用户了解的异常)。 4、不要捕获异常。 

  22. 比较完备的异常处理程序 OutputStreamWriter out = ... java.sql.Connection conn = ... try { Statement stat = conn.createStatement(); ResultSet rs = stat.executeQuery( "select uid, name from user"); while (rs.next()) { out.println("ID:" + rs.getString("uid") + ",姓名: " + rs.getString("name")); } } catch(SQLException sqlex) { out.println("警告:数据不完整"); throw new ApplicationException("读取数据时出现SQL错误", sqlex); } catch(IOException ioex) { throw new ApplicationException("写入数据时出现IO错误", ioex); } finally { if (conn != null) { try { conn.close(); } catch(SQLException sqlex2) { System.err(this.getClass().getName() + ".mymethod - 不能关闭数据库连接: " + sqlex2.toString()); } } if (out != null) { try { out.close(); } catch(IOException ioex2) { System.err(this.getClass().getName() + ".mymethod - 不能关闭输出文件" + ioex2.toString()); } } }

  23. 异常结构图

More Related