Java学习笔记-2010.9.18

 

2010.8.17 马士兵J2SE

第一章 第3讲

环境变量——》 Path (Windows系统在执行命令时搜寻的路径)

命令提示符——》 javac 文件名 ——编译;  java 文件名 ——执行

命令提示符——》 java -version (查看当前jdk版本)

查看——》 显示所有文件;显示后缀名;地址栏显示完整路径(Win7不用设置)

 

2010.8.18 马士兵J2SE

第一章 第5讲

Tips:

环境变量——》 classpath : ;.; (Java编译运行时搜寻class所在的路径,“;”表示不同目录“.”表示当前目录路径)

Java简单规则——》 一个.java文件只能有一个public类

IDE——》 集成开发环境(如JBuilder  eclipse(成长为平台)  VS ....)

 

第二章 第一讲

马老师的作业——》 凡是在课堂上没有敲过的代码,下课后都敲一遍。

怎么敲代码——》 照着老师的程序??  没用!!! 先看懂程序再试着自己写;

作业——》 敲代码  变量 (完成2010.8.18)

 

第二章 第二,三讲

数据类型——》 自动转换 Tips1: double不能自动赋值给float (eg: float f1 = 1.2 错误)

Tips2: int可以自动赋值给byte short char(eg: byte = 1 正确   前提是int值不能超过byte short char的表示范围)

数据类型——》 强制转换 Tips1:整型数据之间的强制转换没有问题 就是砍掉放不下的位

Tips2:doubel不能强制转成float 内部格式不同,不能直接砍掉位 也就是说都double->float会出错 溢出

数据类型——》 运算中的强转 Tips1:byte b1=1,b2=2; byte b = b1+b2; 错误(b1,b2在运算时自动被转换成int,在赋值给b的时候出错)

课堂练习——》 错误集锦   ClassTest.java  (完成2010.8.18)

 

2010.8.19

第二章 第四,五,六讲

作业解析——》 给答案 TestConvert2.java

格式——》 非常重要 Tips1:程序块之间加空行

Tips2:{前面有空格

Tips3:遇到{缩进,Tab/Shift+Tab

Tips4:运算符两侧加空格

Tips5:并排语句之间加空格

Tips6:大括号对齐

Tips7:成对编程{}

运算符——》 &&短路与;||短路或 a&&b(当a为真,b不再考虑) a||b(当a为假,b不再考虑)

“+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统自动将另一个操作数转换为字符串然后再进行连接

当进行打印(println)时,无论任何类型,都自动转为字符串进行打印

三目条件运算符 x?y:z eg:

int score = 80; int x = -100;

String type = score < 60 ? "不及格" : "及格";

int flag = x > 0 ? 1 : (x == 0 ? 0 : -1);

(type = 及格; flag = -1)

第二章 第七~十四讲

如何分析循环——》 最简单的一行行比较    成员变量在内存的栈中存放     看变量如何变化;

作业——》 result = 1! + 2! + 3! + ... + 10!

result = 1 + 3 + 5 + ... + 99

输出1~100内前5个可以被3整除的数

输出101~200内地质数 (完成 2010.8.19)

代码量——》 健壮的程序代码量大概是只完成功能的代码量的3~5倍

· 方法——》 即函数,形参-实参; 返回值-返回值类型

 

 

********************************************

**尚学堂马士兵老师的培训课的第一天结束 **

**第二章重点罗列:标识符 **

** 关键字 **

** Java基本数据类型 **

** 运算符 **

** 表达式和语句 **

** 分支 **

** 循环 **

** 方法 **

** 变量的作用域 **

** 递归调用 **

********************************************

第二章  递归第一~六讲

分析递归程序——》 画图解决,注意调用的顺序

课堂练习——》 用非递归的方法解决Fibonacci数列问题 (完成  2010.8.19)

简单复习第二章

2010.8.20

第三章 面向对象 第一讲

面向对象——》 面向类编程 成员变量 = 属性

用面向对象思考问题——》 Tips1:考虑问题里有哪些类哪些对象;

Tips2:考虑类和对象应该具有哪些属性和方法;

Tips3:再考虑类和类之间有什么关系(关联关系,继承关系,聚合关系,实现关系,多态);

编程的境界——》 Reusable,Extensibility,维护和替换更加方便,

组件编程——》 EJB,Web Service,COM2

第三章 第二,三讲

成员变量——》 Java默认初始化,而局部变量则不会默认的初始化,必须自己初始化

类和对象——》 类是静态的概念,代码区 ————对象是new出来的,位于堆内存,类的每个成员变量在不同的对象中都有不同的值(除了静态变量)而方法只有一份,执行的时候才占用内存

分析内存——》 第三章的重点,理解Java 理解面向对象  理解类 理解对象

内存布局: 局部变量在栈中,成员变量在堆中,new出来的对象c1,c2在栈里,他们指向的内存空间在堆里(幻灯片72,73)

理解了内存,理解了一切

第三章 第四,五,六讲

构造方法——》 没有返回值 方法名和类名要一样

和 new 一起使用

new的执行过程——》 Person p = new Person(1,25); 局部变量p在栈空间里,构造方法的属性(局部变量)_id和_age在栈空间里;然后new对象产生在堆空间里,

构造方法把局部变量_id和_age传给对象的id和age;在栈空间里的_id和_age自动的消失退出栈空间;局部变量p指向堆空间里的new对象。(幻灯片75,76)

构造方法——》 若没有定义,系统自动给添加一个  类名 () {};的构造方法

命名规则——》 类名的首字母大写

变量名和方法名的首字母小写

运用驼峰标识    eg: int myTelphoneNumber ;

第三章 第七讲

例子——》 **非常重要**调用过程演示(幻灯片79,80,81,82,83,84,85,86,87,88,89,90,91)

课堂作业——》 TestPoint.java (完成 2010.8.20)

问题: System.out.println(" " + TP.getDistance()); 运行时会出错

System.out.println(TP.getDistance()); 运行良好

是否是由于TP.getDistance()调用完getDistance()后,getDistance()的return的局部变量在栈中消失,而println(" " + ...)方法需要进行转换并且没有把...进行存储

(貌似老师的方法不存在这样的问题,等待中)

第三章 第八~十六讲

第三章 第十七讲

this关键字——》 你对哪个对象调的方法 this指的就是谁 this是一个引用,它指向自身的一个对象

this.i = i(就近声明原则)——》 当你确定不了参数指的是哪个变量的时候,找离他最近的声明

有时候使用this可以处理方法中成员变量和参数重名的情况

return this有意思

第三章 第十八讲

static关键字——》 静态成员变量,第一次使用就被初始化 static成员变量只有一份 为此类的所有对象共享 cat.java  

就算没有对象也会在Data segment里存一份 属于类的,不属于单门的某一个对象

如何访问static成员变量——》 每一个对象都可以访问,没有对象也可以用类名.成员变量名来访问

第三章 第十九讲

static 方法——》 静态方法 static方法不可以访问非static方法

调用 通过对象引用或类名

第三章 第二十讲

package和import——》 package机制,解决类名冲突问题 提供多重类命名空间 没有打包的类叫裸体类....好想法

package语句应位于代码的第一行(注释除外)

必须保证该类的class文件位于正确的目录下(和包的层次完全一样)

Tips:该类的源代码可能会产生影响(JDK1.5以后),解决方法:删除或转移 .java

在项目中打上包裹,package com.公司名 则该文件位于 /com/公司名 目录下

Java编译器把包对应于文件系统的目录管理,package语句中用'.'来指明包的层次

访问同一包(目录)中的类不需要引入

必须class文件的最上层包的父目录位于classPath下(比较难理解,也是Java中的一个麻烦的地方 )

执行一个类需要写全包名

如果将一个类打包,则使用该类时,必须使用该类的全名(例如:com.sxt.MyClass),Java编译器才会找到

也可以使用import

2010.8.31

第三章 第二十一,二十二,二十三讲

J2SDK中的包——》 jar包,可以用winrar打开 命令行生产自己的jar包 jar -cvf *.jar *.*

java.lang包不需要引入可以直接用 其他的包必须要引入

Sun公司提供的jar包位置:jdk/jre/lib/rt.jar

环境变量的设置和老师讲的不太一样,Win7中系统的classpath不管用,需要用到用户的ClassPath

第三章 第二十四,二十五讲

继承与权限控制——》 内存分析TestPerson.java

访问控制——》 private 类内部

default 类内部 同一个包

protected 类内部 同一个包 子类

public 类内部 同一个包 子类 任何地方

class的权限修饰(仅两种)——》 public 可以在任意地方被访问

default 只可以被同一个包内部的类访问

第三章 第二十六讲

方法重写——》 要求:重写方法必须和被重写的方法具有相同的方法名,参数列表和返回类型

Tips:在重写方法时用Ctrl+C和Ctrl+V

重写方法不能使用比被重写方法更严格的访问权限

2010.9.1

第三章 第二十七,二十八讲

super关键字——》 内存分析是关键 super出现在继承对象中,指向子类实例中包含的父类实例的变量或方法。

继承之中的构造方法——》 Tips:子类的构造过程必须调用父类的构造方法。 子类的对象中存在父类的对象,父类对象的产生需要父类的构造方法参与

Tips:子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法。

Tips:用this(argument_list)调用本类的另外的构造方法

Tips:如果调用super必须写在子类构造方法的第一行 (现有爸爸后又儿子)

Tips:如果子类构造方法中既没有显式调用基类构造方法,而基类中又没有无参的构造方法,则编译出错

2010.9.3

第三章 第二十九、三十讲

练习——》 继承中的构造方法和一般的成员方法的区别

第三章 第三十一、三十二讲

练习——》 同上 (TestTeacher)

第三章 第三十三讲

Object类——》 JDK_API文档下载观看,关于Java所有的类都在其中(地址)

 

2010.9.4

第三章 第三十四、三十五、三十六讲

Object类之toString——》 看toString文档 写程序 Tips:Java在执行时会根据classpath里的路径寻找.class文件,所以".;D:/XXX"点放前面是好习惯

Object类之equls——》 两只猫的比较 “c1 == c2”永远不会true Object类中.equals默认的实现和“c1 == c2”一样,换汤不换药 重写equals,重写toString

第三章 第三十七讲

对象转型casting——》 Tips:一个基类的引用类型变量可以“指向”其子类的对象

Tips:一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)

Tips:可以使用引用 变量 instanceof 类名 来判断该引用型变量所“指向”的对象是否属于该类或该类的子类

Tips:子类的对象可以当作基类的对象来使用称作向上转型(upcasting),反之称之为向下转型(downcasting)

2010.9.7

第三章 第三十八~四十一讲

对象转型2——》 对象转型对可扩展性带来的好处。 父类对象可以指向子类,方法的形参可以是一个父类的对象,子类的对象在方法调用的时候也可以传入。比如打印动物的名字,猫类和狗类也可以将自己的对象传入形参是动物类的方法中打印自己各自的名字

第三章 第三十九讲

动态绑定(多态)——》 面向对象最核心的机制——老师语

动态绑定,方法方面的事,也就是说动态绑定仅仅对于方法来讲,当子类中重写了父类的方法,子类对象被看成父类被引用,当这个被看成父类的子类对象在调用方法时,调用的不是父类的方法而是子类重写的方法

一个被看成父类对象的子类对象,在调用方法的时候却还是调用子类的方法(区别于成员变量,被看成父类的子类对象是没有办法直接访问子类自己的成员变量)

动态绑定带了莫大的好处——老师语

程序的可扩展性达到了最好,如果没有动态绑定,面向对象就不会发展的这么好,他是核心中的核心

多态的必要条件:Tips:要有继承

Tips:要有重写

Tips:父类引用指向子类对象

抽象类抽象方法——》 abstract关键字 依赖于动态绑定,当父类方法仅仅是为了给继承的子类对象来重写的时候(动态绑定过程中父类的方法不会被使用时),可以使用abstract关键字,不写方法体

当一个方法变成抽象方法时,这个类也就成为抽象类,作为抽象类是没有对象可以new的,否则编译器报错

通常需要被继承的父类且父类中的方法会被重写的情况下,父类会被设为abstract类

第三章 第四十二讲

关键字final——》 变量前有final关键字则一旦变量被赋值就不能试图改变他;方法形参前有final关键字则表示一旦实参传入方法,在方法体内不能改变参数的值;final的方法不能被继承,不能被重写

第三章 第四十三讲

接口interface——》 Java是单继承的,而现实中有多继承的现象,

本质上讲,接口是一种特殊的抽象类(是一种只包含常量(静态 final)和方法的定义(抽象方法,不用写abstract,所有的方法都是abstract的),没有变量和方法的实现的抽象类)

特性:接口可以多重实现;

接口中声明的属性默认为public static final 的,也只能是public static final ;

接口中只能定义抽象方法,而且这些方法默认为public 的,也只能是public 的;

接口可以继承其他的接口,并添加新的属性和抽象方法

多个无关的类可以实现多个无关的类可以实现同一个接口。

一个类可以实现多个无关接口。

与继承关系类似,接口与实现类之间存在多态性。

例子里有一切。。。

2010.9.11

第三章 第四十四、第四十五讲

接口interface——》 接口之间也可以继承,实例继承有父接口的接口时,必须把所有的本接口以上的接口方法都实现。

类和类之间可以相互继承,接口和接口之间可以相互继承,类只能实现接口

如果一个类同时继承多个接口,而不同接口接口中的方法名称和返回类型都一样,只要写一个方法编译可通过;但如果不同接口中的方法名称一样而返回值类型不同,而类又都想实现两个接口,没办法,只能舍去一个,因为在类内定义的方法必须要让编译器能识别。

 

 

第三章总结 第四十五讲

 

****************************************************

** 内存分析贯穿始终 **

** 对象和类的概念 **

** 类(对象)之间的关系 **

** 面向对象设计思想 **

** class **

** new **

** 引用的概念 **

** 构造方法的概念 **

** 方法重载 **

** 构造方法重载 **

** this **

** static **

** package&import **

** private (default什么都不写) protected public **

** extends **

** overwrite **

** final **

** Object **

** toString **

** equals **

** upcasting downcasting **

** polymophysm / dynamic binding / late **

** abstract class **

** interface **

** implements **

****************************************************

 

 

 

JDBC教程插入

2010.9.12

JDBC编程,MySQL数据库实现——》 大管家DriverManager,在连数据库之前先要在DriverManager中注册

JDBC编程步骤:

JDBC初步——》引入对应数据库的jre包,import java.sql.*;

然后新建一个Driver的对象。新方法:Class.forName("oracle.jdbc.driver.OracleDriver"); or new oracle.jdbc.driver.OracleDriver

可以从大管家那里拿一个connection;Connection conn =  DriverManager.getConnection("数据库固定格式字符串","数据库用户名","密码");//也叫JDBC的URL字符串

有一个Statement对象;给定一个ResultSet;遍历对象ResultSet所指向的空间(即数据库的数据);使用数据;

依次关闭RS,STMT,conn,Driver//这里会出问题,由于在关闭操作执行之前可能会出Excepetion,造成最后的关闭操作无法完成,最终导致数据库程序崩溃,所以要用try,catch,finally

JDBC编程需要极端的严谨,多用try catch。例子, TestJDBC

以后写程序尽量朝完美的方向,朝专业化的方向发展。——老师语

离完美的最后10%——注释。——老师语

JDBC处理DML——》 除了不用ResultSet以外,其他的东西全要。执行也简单,stmt.excuteUpdate(sql语句);即可

有时候执行完DML后看不到结果,即数据是否写入数据库不知道,可以执行eclipse中Windows菜单,showView->Other->Data->Database Explorer,然后在视图中new一个connection指向自己用的数据库

写Database名,写JDBC Class的名称,地址。写JDBC的URL,写用户名、密码

然后找到自己所要的数据库,找Table,右键Data->Sample contects,可以看到数据库中的内容(lomboz-eclipse的好处)

今天两个练习做完。在开始明天的课程

2010.9.13

statement——》 使用

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值