分享

java学习听课笔记

 怕瓦落地007 2014-10-21

2014-2-26

搭建开发环境

     MyEclipse8.6(未注册):新建Java Project,运行MyEclipseGen.java文件(MyEclipsePass.doc),生成注册名、序列号。

     JDK:安装完成,测试:cmdjava -version

     配置环境变量:1.pathC:\Program Files\Java\jdk1.6.0_02\bin       2.classpath.;

 

Java SE:控制台C/S开发。

Java EE:网站B/S开发。

Java ME:嵌入式开发。

 

JVM:半编译、半执行,生成.class字节码文件,慢!

分布式:输入网址,并不是htmljsp…

 

命令行参数String args[](args:字符串数组的变量名):保存的是Java运行时传递给运行类(.class)的参数(默认接受的是字符串)àjava Test first second

 

Java命名规范:

包名(文件夹)所有字母全小写。

帕斯卡命名法

项目名(盘符)首字母大写,如果项目名由多个单词组成,那么每个单词的首字母大写。

类名:同上。

驼峰命名法

方法名:首字母小写,如果方法名由多个单词组成,那么其他单词首字母大写。

变量:同上。

 

快捷键:

执行Java程序:Ctrl + F11

System.out.println();syso+Alt+/

修改项目名称:选定,F2

删除项目:选定,Delete

删除整行代码:游标定其前Ctrl + Shift + Delete

增加多行注释:Ctrl + Shift + /

取消多行注释:Ctrl + Shift + \

增加或取消单行注释:Ctrl + /

格式化代码:Ctrl + Shift + F

自动添加提示(补齐代码):Alt + /

自动提示(出错):Ctrl + 1

弹出生成程序块结构的菜单:Alt + Shift + Ztry/catch

弹出的菜单可以生成封装方法和构造方法:Alt + Shift + S

 

2014-2-27

继承:节省代码量。一个亲爹,多个干爹(接口)。对比C++

包:单个家庭。

公共类(public)只能有一个,任何第三方可以获得其中信息。

 

用爸爸的钱protected(亲儿子(private不成立),非亲儿子(public不成立))

Protected:①不是同一个家庭,但若是自己的亲人(儿子),可以访问另一个家庭(父亲)。

              ②在同一家庭,非亲人,也可以访问。

 

默认:只是同一家庭的人可以访问。

数据类型

值类型(单一盒子):直接包含值的类型。

byte, short, int, long(L), float(F), double, char(默认:’/0’), boolean(isNum=true/false 默认:false)

引用类型(外包装):不直接包含值的类型(String,数组,自定义类(默认:NULL)

DataTest dt = new DataTest();创建对象并开辟内存空间。外包装(dt):放于内存。

 

多分支结构switch

case的值:与整型(int)相兼容的数据类型:int, short, byte, char

 

循环结构

continue终止本次循环,进入下一次循环。

break终止当前最近的整个循环。

 

2014-2-28

数组属于引用类型,默认值为NULL

int[] array = new int[10];//int[]整形数组类型(引用类型)

int[] array = {1,2,3,4};//长度:4

 

Java包命名规范

①:实体类包(JavaBean):①实体类:po,②JavaBeanpojo

       com.neusoft.modelname.po

       com.neusoft.modelname.pojo

②:业务逻辑包:①业务接口:bo,②业务接口实现类:bo.impl

       com.neusoft.modelname.bo

       com.neusoft.modelname.bo.impl

③:数据访问逻辑包:①数据访问接口:dao,②数据访问接口实现类:dao.impl

com.neusoft.modelname.dao

com.neusoft.modelname.dao.impl

④:自定义工具包:工具类:util

       com.neusoft.util

       com.neusoft.modelname.util

 

Java API自带包

①:java.langjava基础包,程序自动导入。

②:java.utiljava工具包。

③:java.sqljava数据库连接包。

④:java.iojava读写文件所用的工具包。

 

Java中的foreach循环(只能负责一维数组的输出操作)

for(int num : array){

       System.out.println(num);

}

 

异常处理

try {

              //...1

       } catch (Exception e) {

              //...2

       } finally {

              //...3

       }

1正常业务逻辑

2异常补救逻辑(若1出错,终止当前操作,进入2;若1无错,则2不再执行)

3必须执行逻辑

 

2014-3-3

java.lang.NullPointerExceptionnull值进行操作,出错

 

return当程序遇到return关键字时,将终止当前逻辑。

 

①封装(时钟,例子挺好)

在类中,无继承关系的属性,无论如何不能用public修饰,应用private

私有属性被封装成共有属性(setter),提供给第三方(getter:他可以访问我的属性,但必须通过一定的方法来获取。

public void setsId(String sId) {

        this.sId = sId;(水杯<--水)

}

public String getsId() {

        return sId;

}

 

Student stu = new Student();stu对象变量(实例);new Student()利用默认的构造方法,开辟一段内存空间。

 

构造方法

用于创建类的实例(对象)。

没有返回值,方法名必须和类名相同。

在类中若不声明构造方法,JVM将自动分配一个无参构造方法。

如果在类中声明带参构造方法,那么JVM将不再分配无参构造方法,需显式声明

函数:相对于面向过程。

方法:相对于面向对象。

 

方法重载(静态多态——编译时,既知)

创建在同一个类

方法名相同、参数列表必须不同(面条过水、拌菜)

方法重载与方法返回值类型、方法访问修饰符无关

 

静态方法(群体共有的方法)static修饰的方法,可以使用类名或对象名(不建议)调用。

实例方法(个体共有的方法)static修饰的方法,只能使用对象名调用。

 

非静态方法可以调用静态内容;静态方法不可以调用非静态内容。

static什么时候程序运行完,什么时候清除,所以要尽量少用

 

人工通知JVM,实行垃圾回收机制

System.gc();

Runtime.getRuntime().gc();

通知清理垃圾后,可能会延迟清理(找一合适机会)。

 

2014-3-4

②继承

父类的属性、方法等元素可以选择性地继承给子类,父类的构造方法不能继承(Animal实例化一个动物,Dog只能实例化一个狗

父类的私有属性可以全部继承给子类,但子类不能直接访问。相比于protected

java.lang.Object所有类的父类(祖先,看不到,但确实存在),所有对象(包括数组)都实现它的方法。

方法重写(覆盖):子类的重名方法替代父类方法执行。

final

     常量一旦赋值,将不再改变(final int MAX_AGE = 60)。

     final修饰的方法,将不能被重写。

     final修饰的类,将不能产生子类。

 

③多态(运行期绑定没有继承,就不存在多态——运行时放置):简化操作步骤(喂狗、喂猫、喂….

Animal an = new Dog();父类的引用可以指向子类的对象。

多态三条件:继承、重写、父类引用指向子类对象。

编译期:anAnimal的对象;运行期:anDog的对象。

 

装箱:将值类型包装为引用类型(Integer num = new Integer(1);

拆箱:将引用类型转换为值类型(int result = num.intValue();

byte àByte   short àShort              int àInteger         long àLong         float àFloat 

double àDouble         char àCharacter         boolean àBoolean

 

String str1 = new String(“hello”);

String str2 = new String(“hello”);

String str3 = ”hello”;

String str4 = “hello”;

str3==str4(相同字符串,共享同一内存字符串池==用于判断字符串内存地址是否相同)

str1.equals(str2)(equals用于判断字符串值是否相同)

 

内部类

①成员内部类

       public class Test{

              class InnerClass{

              }

       }

 

②静态内部类

       public class Test{

              static class InnerClass{

              }

       }

 

③方法内部类(局部内部类)

       public class Test{

              public void test(){

                     class InnerClass{

                     }

              }

       }

 

     匿名内部类

 

2014-3-5

④抽象

@OverrideJava注解,表示覆盖或重写父类方法。

方法重写,父类的方法此时无意义(虚构)

抽象方法public abstract void work();(无方法体)——猜的方法:有龙吗?龙吃什么?

抽象方法只能出现在抽象类public abstract class Employee{}中。

抽象类可以包含也可不包含抽象方法à必须直接由子类方法重写,可以包含非抽象方法à直接继承给子类。

     抽象类不能实例化对象new Employee(){匿名内部类})。àEmployee emp=new PersonPart();

 

接口(其中方法全部为抽象方法public abstract——特殊的抽象类)

①:定义一套标准,若某类想实现此接口,则必须实现接口中的所有方法。

②:通过接口实现多继承。

③:由几个类的共同行为抽取而来。

④:不能实例化对象。ITime it=new ITime(){匿名内部类};à相当于实现类(一次性使用)

⑤:当接口(规划期)定义完成时,方法尽量不要再改变。

⑥:只能定义常量public static final int SPRING =1;…变相实现enum效果0          

 

异常

自定义异常(MyException):继承人为异常Exception

在执行某个方法时,有可能抛出异常到自定义异常(MyException):方法声明时抛出异常throws

出错后,抛出异常(new MyException(“error!”)):方法内部抛出异常throw

     执行某个方法时,有可能抛出多个错误,用“,”隔开:MyException,HisException

     try…catch结构中可以出现多个catch块,也可以相互嵌套。若出现多个catch,则catch异常应按从小到大排列。

try{

       ...

} catch (NullPointerException ex) {

       ...捕获异常

} catch (Exception ex2) {

       ...

} finally {

       ...

}

 

2014-3-6

java.lang.Math:数学类,包含若干数学专用属性、方法。

java.util.Date:普通日期类。

java.sql.Date:与数据库相对应的日期类型(包含毫秒)。

 

集合(只能增加引用类型元素,不能增加值类型数据

Collection(接口)

       List(接口)

              ArrayList(类)à有下标,检索速度快

List list = new ArrayList();

list.add(1);à自动装箱Integer in1 = new Integer(1);

list.add(“string”);

for(Object num : list){

       System.out.println(num);

}

While(it.hasNext()){

       Object obj = it.next();à将读到的值取出

       System.out.println((Integer)obj);à自动拆箱(Integer)obj.intValue()

}

              LinkedList(类)à无下标,修改速度快

       Vector(类)à有下标,线程安全(加锁)

       Set(接口)à无下标,无重复值,无顺序

              SortedSet(接口)à自动排序

                     TreeSet(类)

              HashSet(类)à加快摆放的速度

迭代(遍历)器需要通过Collection分支集合类的方法获得:

Iterator it = list.iterator();àlist里面的值原封不动地放入it中。

it.hasnext();à将指针向下移动一行;判断本行是否有值,返回bool类型。

Arrays.sort(数组);à 将数组中的数据进行冒泡排序。

Collections.sort(集合);à将集合中的数据进行冒泡排序。

 

Map(接口)

       SortedMap(接口)

              TreeMap()

       HashMap()

              Map map = new HashMap();

              map.put(“one”,1);

              map.put(“two”,2);

 

              Set set = map.keySet();àMapIterator方法

              Iterator it = set.iterator();

While(it.hasNext()){

String key = (String)it.next();à获取键值

Integer value = (Integer)map.get(key);

System.out.println(value);

}

       LinkedMap(类)

 

泛型(遏制存在多种类型元素的可能

Object类的toString()方法,可以继承到每个子类中,若子类重写此方法,可以实现打印对象、输入属性值的特点,默认调用。

 

2014-3-10

I/O

 

String

str.getBytes():将String编码为byte序列,存储于一byte数组中。

 

根据文件内容划分

     字节流:读写英文、数字。(字节!=字符)

字节输入流—java.io.InputStream:所有字节输入流的父类(抽象类)

       FileInputStream(子类)àread(字节数组)负责读入文件中的内容,返回值以整数类型(ASCII)返回

字节输出流—java.io.OutputStream:所有字节输出流的父类(抽象类)

       FileOutputStream(子类)àwrite(字节数组)负责向文件写入指定内容

 

     字符流:读写特殊字符—英语以外的其他语言。

字符输入流—java.io.Reader:所有字符输入流的父类(抽象类)

       InputStreamReader:负责读入文件中的内容(如中文)

       BufferedReader:带缓冲区的的字符输入流

字符输出流—java.io.Writer:所有字符输出流的父类(抽象类)

       OutputStreamWriter:负责向文件中写入指定内容(如中文)

       PrintWriter:带缓冲区的字符输出流àflush():清空缓存

数据流

输入流—DataInputStream:用于读数字àreadLong()

输出流—DataOutputStream:用于写数字àwriteLong()

 

序列化Serializable):空接口,实现此接口,不需实现任何方法。à若想将一对象写入文件,则必须将此对象进行序列化。

对象流

对象输入流—ObjectInputStream:用于文件中对象àreadObject()

对象输出流—ObjectOutputStream:用于将对象写入文件àwriteObject()

 

JDBCJava数据库连接技术

新建lib(存放JDBC驱动)àBuild PathàConfigure Build PathàLibrariesàAdd JARSà

 

通讯端口

     MySql3306

     Oracle1521

     Sql Sever1433

 

2014-3-11

单例模式:不允许通过类的构造函数创建对象,而用一静态方法获得其对象(构造函数只有一个,且必须为私有的无参构造函数

 

新建sql(存放数据库文件.sql)

新建pojo(存放JavaBean:序列化,Setter&Getter,构造方法)

新建bo(存放业务逻辑接口IStudentBO:梳理业务逻辑所包含的方法,随时抛出异常)

新建cfg(存放config.properties:数据库连接字符串——driverurlusernamepassword)

新建DBUtil(运用单例模式,创建用来实例化DBUtil静态方法newInstance()创建数据库连接,数据库操作的关闭,事务控制)

       // 创建可以解析资源文件的对象

private Properties info = new Properties();

 

    /* 将唯一的构造方法写成私有,以实现单例模式 */

    private DBUtil() throws Exception {

        // 通过流,利用当前类的对象,获得资源文件的信息

        InputStream is = this.getClass().getResourceAsStream(

                "/com/neusoft/cfg/config.properties");

        // io流加载至Properties对象,使其可以解析文件内容

        info.load(is);

        if (is != null) {

            is.close();

        }

    }

       public static DBUtil newInstance() throws Exception {

        /* 保证线程安全,实现实例的唯一 */

        synchronized (DBUtil.class) {

            if (util == null) {

                util = new DBUtil();

            }

        }

        return util;

    }

public Connection getConnection() throws Exception {

        /* 通过Properties对象获取value */

        Class.forName(info.getProperty("driver"));// 注册数据库驱动程序-->反射,根据地址找到其人    

return DriverManager.getConnection(info.getProperty("url"), info.getProperty("username"), info.getProperty("password"));// 通过驱动程序管理器获得连接对象

    }

    /* 关闭数据库的连接 */

    public void close(Connection conn) throws Exception {

        if (conn != null && !conn.isClosed())

            conn.close();

    }

 

    /* 关闭对SQL语句的执行 */

    public void close(Statement stmt) throws Exception {

        if (stmt != null)

            stmt.close();

    }

 

    /* 关闭对SQL语句的预编译执行 */

    public void close(PreparedStatement ps) throws Exception {

        if (ps != null)

            ps.close();

    }

 

    /* 关闭Select查询语句的结果集 */

    public void close(ResultSet rs) throws Exception {

        if (rs != null)

            rs.close();

    }

/* 事务控制,提交操作 */

    public void commit(Connection conn) throws Exception {

        conn.commit();

    }

 

    /* 事务控制,回滚操作 */

    public void rollback(Connection conn) throws Exception {

        conn.rollback();

    }

新建bo.impl(存放业务逻辑接口实现类StudentBOImpl)

    private IStudentDAO dao = new StudentDAOImpl();

    return dao.deleteStudentById(id);

新建dao(存放数据访问接口IStudentDAO)

新建dao.impl(存放数据访问接口实现类StudentDAOImpl)

java.sql.Connectin:负责Java与数据库的连接

java.sql.PreparedStatement:负责执行sql语句(预编译的)

java.sql.Statement:负责执行sql语句

java.sql.ResultSet:负责承接Select语句查询出的结果集

若方法涉及到数据库的信息修改,设置事务为手动提交。

 

2014-3-12

Thread多线程

Java类实现多线程的方式

    Java类继承Thread

Public class MyThread extends Thread{

@override

public void run(){}

}

Thread t1=new MyThread();

Thread t=new Thread(t1);//包装袋,不是必须

执行线程:t1.start();

执行线程:t.start();

    Java类实现Runnable接口(多继承,推荐使用)

public class MyThread implements Runnable{

@override

public void run(){}

}

Runnable t1=new MyThread();//一个new,对应一个线程

Thread t=new Thread(t1);//包装袋,必须

执行线程:t.start();

 

Socket网络编程

TCPjava.net.SeverSocket传输信息比较安全(重复确认),效率低。

UDPjava.net.DatagramSocket快捷,方便,不安全。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多