1、Day01 JDK 的安装,MyEclipse 的使用一、jdk 的安装a) 跟普通的软件安装过程一样。jdk-6-windows-i586,默认的路径在 C:Program FilesJava,可以改变。b) 在记事本下去编写 java 程序,所有的 java 文件的扩展名都是*.java, 类的文件名称每个单词的首字母必须大写。c) 如何定义类:public class HelloWorldd) 如果要在一个类中去体现效果出来,确切来说是要将 java 程序执行出来,那必须写上一个方法,主方法:public static void main(String args)e) Java 文件要显
2、示效果出来,那必须经历 2 个过程,1 ,编译过程,需要使用 javac命令。2 执行过程需要使用 java 命令。f) 当我们要去编译和执行 java 类的时候,需要使用 javac 和 java 命令。假如现在在任何一个地方写一个 java 文件。首先先找到 java 文件,进入某个盘符 d:,要进去该文件的目录中 cd D:kende宝 Java EEOracle 培训Java_南医 3day01,现在已经进来了该文件中的目录中,那么还需要使用 javac 命令和 java 命令去编译和执行 java 程序。g) Javac 命令和 java 命令存在 jdk 中的 bin 目录中。为了
3、在任何一个地方写的 java 文件,都可以随意的使用 javac 命令和 java 命令。那必须先将这 2 个命令所处在的路径配置在环境变量 path 中。h) Path 环境:C:Program FilesJavajdk1.6.0bin ,如果有多个路径,那么用 ;隔开。i) 编译 java 文件,javac HelloWorld.java,不区分大小写,当编译好了之后,会在当前目录下生成相对应的字节码文件*.classj) 执行 java 文件,执行*.class 文件,用 java HelloWorld,这个时候区分大小写。k) 执行的过程是先将已经编译好的字节码文件*.class 交给
4、 jvm 去执行处理,但是 jvm首先应该先找到*.class 的位置,然后要去调用 jdk 中的类库对象(lib 目录) ,执行处理的时候,首先应该先将以上的 2 个路径配置好作为 classpath 的环境变量。l) Classpath:.; C:Program FilesJavajdk1.6.0lib二、第一和 HelloWorld 程序常见的几个错误:a) 如果类的文件名称和带 public 修饰符的类名名称不同的话,会出现这样的错误,那就类名是公共的,应在名为*.java 中去定义。b) 如果将主方法的 public static void main(String args)中的 p
5、ublic ,static ,void , main, String中的任何一个改变,都不是规定的主方法,但是执行的 java 文件的时候,必须要去规定的主方法中去执行处理,如果找不到,那么会显示找不到主方法的错误出来。c) 软件包或者是类名的每个单词的首字母必须大写,在类中不能无中生有,也就是除了类名,属性名称,方法名称可以自己定义之外,其他全部按照规范来写代码。d) 标点符号必须是在英文字符下的标点符号,否则会出现“非法字符“错误。e) 一个类文件中*.java 中可以包含有多个类名,比如类 A,类 B.,但是只有一个类名是带 public 修饰符的 ,而且是跟类的文件名称是相同的。当编译
6、的时候就会生成相对应的多个字节码文件,但要去执行的时候,那么只需要执行相对应的字节码文件即可。f) 在用命令编译程序的时候,注意看程序里是不是有包名,如果有包名则在进入路径的时候就不要尽在最底层,这是进到上一层(cd .)编译的时候 java day01/Test三、MyEclipse 的使用:a) 新建工程:因为讲解的时候 JavaSE,所以只需要新建 java Project 即可。b) 当工程新建好了之后,JavaSE_nayi3 的时候,其下有 2 个目录,一个 src(放源码的地方) ,一个是 jre(MyEclipse 自带的 lib 包)c) 在我们安装之前是否需要安装:i. 当
7、建立的是 的时候,不需要安装,因为本身中已经包含了包,所以我们通过这个工具来写的任何一行的代码中,如果有调用到了类库对象中的类,那么都去这个工具中集成的中去访问。ii. 当建立并且部署(装载)的的时候,因为的需要使用服务器(比如, ,) ,可以通过以上的任何一个服务器去装载的的项目。这些服务器都是通过来写的,所以你要能够正常使用以上的服务器,那必须首先服务器要去找到相关的的类库对象(中的或者是的目录) 。iii. 当建立项目的时候也需要iv. 总结:除了建立的的时候不需要安装之外,那么建立其他的工程( ,的等等)这些都需要先安装好。d) 在中去建立包名,包名全部的字母都小写。比如定义包名我们通
8、常是这样来定义,比如 com.chat.togogo,以后做 javaEE 的项目需要通过这样来命名包名,但是现在为了复习的方便,全部用 day01,day02e) 通过 HelloWorld 引入一个简单的 Student 类。 (基本上是没有注释) ,在包名中新建一个 class 类。f) 如何导入工程:当你们拿到我的工程,需要导入到 Myeclipse 中去,file-import-general-existing project into workspace-接下来连接工程的路径即可。练习总结:1.有返回值的自定义方法,在调用的时候必须是以打印的方式调用,不能直接调用,但是没有返回值的
9、构造方法就可以直接调用。调用属性也是以打印的方式调用。四、常见问题总结:为什么要配置环境变量 path 与 classpath?a) 一个*.java 的文件需要将效果执行出来,那必须要经历 2 个过程,编译和执行的 2个过程。i. 编译的过程是由编译器编译的,需要用到 javac 命令去编译ii. 执行的过程是由 jvm(java 虚拟机)去执行处理的,需要用到 java 命令去执行处理。b) 以上 2 个命令(javac 和 java 命令)存在哪里?存在 jdk 下的 bin 的目录,所以为了在任何一个路径下写的 java 程序,都能够运用上 javac 和 java 命令,必须将 bi
10、n路径配置作为系统的环境变量 pathc) b)中就已经阐述了为何需要配置 pathd) 通过 javac 命令去编译通过之后,就会生成相对应的字节码文件,字节码文件要交给 jvm 去执行处理。i. 首先要让 jvm 去找到字节码文件,那是当前路径,用.来表示ii. 需要让 jvm 去找到类库对象,因为字节码文件中包含有 jdk 中的类库对象(存在 lib 目录中) 。为了能够找到 lib,所以需要先将 lib 的路径配置作为 classpath环境变量。Day02 类的结构,引用与势力变量与常量的区别,控制流程语句一、类的结构1、如何定义属性: 1)结构:访问权限 + 返回类型 + 属性的名
11、称;a、访问权限:4个访问权限public - protected -默认的访问权限-privatepublic-在任何一个包下的类都可以访问。protected-在同一个包下的类才能去访问或者在不同包下的子类可以去访问。默认的访问权限-在同一个包下的类才能去访问。private-在本类中才可以访问b、返回类型:包含有2大类:1)基本数据类型8 大整型的基本数据类型:1个字节:byte(字节型)2个字节:char(字符型),short (短整型)4个字节:int(整型)8个字节:long(长整型) 布尔类型:1个字节:boolean(布尔类型) 浮点型:4个字节:float( 单精度浮点型)8
12、个字节:double(双精度浮点型 ) 2)引用类型(对象类型)引用类型可以分为3类i.自定的引用类型:比如自己定义Student2类ii. 类库类型:比如String 类型,凡是在api中可以找得到的所有的类型都是类库类型。iii. 数组类型: iv. 枚举v. New出来的东西vi. 包装类(Byte Short Integer Long Character Boolean Float Double) 有方法的c、属性的名称如何命名:成员变量:可以修改的变量,变量从第二个单词以后的每个单词的首字母开始大写,其他全部小写.studentScore变量声明后就可以使用了,但是,在不同的地方声明
13、,它的作用范围是不一样 的,如果超出了她的使用范围就会出错在类中声明的变量称为成员变量,一般在类开始出声明,可在整个类中使用(在该类的一个大括号类)。在方法中声明的变量叫做局部变量,它的使用范围当然只能局限在该方法中。常量:不能修改的,是被final,所有字母全部大写. d、属性是否一定要赋值:可以赋值,也可以不赋值,当不赋值的时候,系统会给它一个默认值,如果返回类型是基本数据类型那么它的默认值可以有以下值:0,false,0.0,null2、构造方法2、如何定义构造方法:结构:public + 类名()1)无参数的构造方法(将值写死了)2)有参数的构造方法(没有将值写死,给调用的人去赋值)无
14、参数的构造方法和有参数的构造方法的最大区别那就是:有参数的是没有将值写死,给调用的人去为它进行赋值无参数的已经在构造方法将属性和引用类型的变量的值写死了 无参数的构造方法和有参数的构造方法都可以为一下的内容进行赋值:1、为当前类的属性进行赋值2、为引用类型的变量进行赋值。但是通常来说要进行赋值都是写在有参数的构造方法中进行。当该类中没有写任何的构造方法的时候,系统也会默认的给一个无参数的构造方法。如果只写了有参数的构造方法,那么有参数的构造方法就会将无参数的构造方法覆盖掉了所以只要写了有参数的构造方法进来,那么按照习惯也将无参数的构造方法也写进来。3、自定义方法3、如何自定义方法:1 )结构:
15、访问权限 + 返回类型/void + 方法名称()2)访问权限跟属性的访问权限是一样的。3)如果有返回类型跟属性的返回类型一样了。但是方法可以没有返回类型,那就是void有返回类型的时候,需要在方法体中return相关类型的值给它没有返回类型的时候,在方法体中不需要出现任何的return。4)方法的定义可以分为:方法的声明:访问权限 + 返回类型/void + 方法名称 ()方法的实现: 5)方法的命名规则跟属性的命名规则一样。6)方法有参数列表,但有参数的时候,将参数写到(), 当没有参数,那就空在那里。关键字不能做包名和类名4.程序的入口二、java 重要基础知识a) 阐述引用和实例,变量
16、和引用变量的区别:b)局部变量(public void g()int i;)在使用之前必须初始化,但是属性(class int=I;)与形参(public void g(int i))就可以不用初始化 局部变量必须要赋值,而且在其他方法中不可以访问。三、Java 中的流程控制语句:a) 循环语句:i. For 循环:在第一次迭代之前要进行初始化( initialization) 。随后,它会进行条件测试,而且每次迭代结束时,进行某形式的”步进”(step)for(initialization;Boolean-expression;step) 注:里面可以为空statementii. While
17、 循环:在循环开始时,会计算一次布尔值,而在语句的下一次迭代开始前会再进算一次while(Boolean-expression)statementiii. Dowhile 循环:先计算一次再循环,尽管刚开始是 false 但是都会执行一次,其他的不会。dostatementwhile(Boolean-expression) b) 条件判断语句:i. If 条件语句:if(Boolean-expression)statementii. Ifelse 的嵌套: if(Boolean-expression)Statementelsestatementiii. Switchcase四、练习:a) 写一
18、个计算员工工资的类:i. 刚入职的基本工资(给定的,每个员工都不一样)ii. 总的工龄工资1. 工作时长:(n 年,可以是 1-n 年)2. 第 1 年的工龄工资是给定的,当工作年龄 1 年以上的时候才有工龄工资,以后的每年的工龄工资都相当于上 1 年工龄高工资的 1.5 倍iii. 总工资 = (刚入职的基本工资 + n 年来的总的工龄工资)iv. 实际拿到的工资待遇 = 总工资交完税和交完住房公积金之后剩余的部分。1. 当总工资待遇是在 3500 元以下(不包含)的时候,不需要交任何的税收,也不需要交任何的住房公积金2. 当总工资待遇是在 6000 元以下(不包含)的时候,需要交 2%税收
19、,也需要交 3%住房公积金3. 当总工资待遇是在 10000 元以下(不包含)的时候,需要交 3%税收,也需要交 4%住房公积金4. 当总工资待遇是在 10000 元以上(包含)的时候,需要交 4%税收,也需要交 6%住房公积金Day03 访问控制符,异常一、练习B=a+ :后置用法:是在使用变量之后,在对变量的值进行加 1 如 a=5 那么 B=5,a=6B=+a 前置用法:是在使用变量之前,先使变量的值加 1二键盘输入方法:Scanner a=new Scanner(System.in);三不同访问修饰符1)在同一个包中只有私有的不能被另一个类访问,也只有私有的不能被继承。2)在不同包没有
20、任何关系的两个类,只有 public 类的 public 成员才可以被另外一个包中的类访问。3)在不同包中有继承关系的两个类,只有 public 类的 public 成员和 protected 成员可以被另外一个包中的子类在内部使用,但是在子类的外部,通过子类对象名只能访问父类的 public成员。四常用操作程序:1)键盘输入:public static BufferedReader getKey() return new BufferedReader(new InputStreamReader(System.in);2)自定义类异常: public class UserExistExcept
21、ion extends RuntimeExceptionpublic UserExistException()this(“用户已经存在!“);public UserExistException(String msg)super(msg);public class Test public static void test()/调用自定义的异常类UserExistException exception = new UserExistException();/主动方法抛出throw exception;public static void main(String args) test();Day04
22、 数组,封装一、数组:a) 概念:之前讲的其他的数据类型(基本数据类型和自定义的引用类型,类库类型的引用类型)都是只能保存一个数据。但是现在的数组是可以保存多个同种类型的数据(比如可以保存多个 int 类类型的数据) 。b) 如何创建数组(2 种方式):i. 比如创建 String 类型的数组,String values = null;ii. String values = null;c) 如何定义数组(2 种方式):i. String values = new String5;-指明了数组中的空间大小是 5 个。但是里面的所有元素的值都是默认值 nullii. String values =
23、 “kende”, “Jason”, “togogo”;-不但指明了数组的空间大小,而且已经明确的指明了数组中每个元素的值。d) 从现在开始要学会查看帮助文档(api 文档)e) 当需要导入类的包的时候,可以点击左边红色的灯泡,当然也可以使用快捷方式ctrl + shift + of) 遍历数组:for 循环进行查询g) 数组的排序:通过 Arrays 类中的 sort 方法,将所需要排序的数组放到 sort 方法的参数中去,就可以将这个数组进行升序的排序。h) 数组的拷贝:也就是数组中元素值的修改功能。System.arraycopy(5 个参数);i. 思路:定义 2 个数组,我们从其中的
24、一个数组 A 中的某几个元素拷贝到另外一个数组 B 中去,达到改变另外一个数组 B 元素值的目的。i) 数组总结:i. 当定义了一个数组的时候,数组中的空间大小是确定的。比如是 5 个空间大小,那就永远都是 5 个空间,不能减小或者增大的空间。也就是说数组一旦定义了,是不能够进行删除和添加的功能。ii. 数组可以进行查询元素,和修改元素的功能。iii. 所以根据不能删除和添加元素的缺陷,那么后面也会学到一个叫集合的对象可以代替数组的功能,而且有添加和删除元素的功能。iv.j) 如何定义二维数组和遍历二维数组:i. 比如定义一个二维的 int 类型的数组 int lengthList =1,2,
25、3,10,20,30,40;ii. 二维数组其实里面的每个元素同时又是一个一维数组。iii. 遍历二维数组的思路:1. 遍历二维数组,得到一维数组2. 遍历一维数组,得到具体元素的值。二、面向对象的特性:1、封装1)概念:是把一段通用性很强的代码封装起来(或者说包装起来) ,称为*.jar,只能去调用,但是不能修改源代码。2)目的:是为了隐藏具体的技术细节,因为这个封装起来的代码含金量非常高,不希望其他无关的人员去查看源代码。最终来说来说为了程序员的开发效率。3)框架的团队或者是中间件的团队去完成封装的这样的工作。这样的团队中的每个成员必须是具有非常丰富的项目开发经验的人才能去写。4)封装的具
26、体的几种形式:A 中间件或者是框架:中间件指的是公司里的小型的框架,只是适用于这个公司的小型的框架;框架是适用于整个行业中的,是每个开发人员或者是每个公司都适用的框架。B javaBean 或者实体类:它是做 JavaEE 的项目的时候需要使用到,或者说只要跟数据表进行打交道的都需要定义相对应的实体类对象。它是跟数据表进行对应的,比如我现在需要做一个用户模块,对应一张用户表 user_list(user_id, user_account, user_password),这个时候有一个相对应的实体类对象 User(userId, userAccount,userPassword).,并且将所有的
27、属性进行私有化,希望不要直接去修改或者访问属性的值,而是提供属性的 set 方法和 get方法进行访问。set 方法指的是设置属性的值,get 方法是获取属性的值。实体类对象到底用在哪里?通过 JavaBean 实体类对象的图去阐述。C 接口中的封装的属性和方法。 (第 4 个特性去讲)Day05 继承 多态 抽象类2、继承1)概念:如果一个类 A 继承了类 C,那么类 A 就可以去获取类 C 中可以(如果访问权限是私有的那么就不能访问)获取的属性和方法。关键字 extends 例如:c extends a除了 private 的不能访问 其他的可以访问。如果没有 extends 的字样,那么
28、默认为是java.lang 中的 obiect 子类。2)优点:是为了节省代码量。3)举个例子来说明继承的概念:比如写一个父类 Father,一个子类 Son,Son 去继承 Father4)虽然子类可以去获取父类可以获取的属性和方法,但是如果子类中相关的方法跟父类中的相关方法的实现部分不一样,那就不能继承。而必须将父类中的那个方法重新的改写一遍,这个概念成为重写或者改写或者覆盖。5)重写方法的调用:采取的是最近原则,如果再当前类中可以找到该方法,那么就执行当前类方法中的内容(重写)否则就执行父类中方法的内容(继承)6)为何需要重写:是因为子类中相关方法的实现部分跟父类中的相关方法的实现部分不
29、一样,所以不能继承,只能将方法重写写一遍(重写的概念)7)重写的条件:是需要将父类中方法的声明部分完全一样的搬下来,但是访问权限可以稍微修改一下(那就是可以扩大和相等,但是不能缩小访问权限)3、多态1)概念:它是在继承的概念基础上去延伸的另外一个概念(与属性没关系的,多态体现的是父类的方法) ,具体来说是一种父类的类型,可以出现多个不同的子类的类型(或者是形态) 。 (同样的代码,实现不同的功能如。class A extends B; . A aa=new A; B bb=new B; aa.f();bb.f(); aa=bb; aa.f();)最后 aa.f()就是多态。2)多态的表示形式:
30、A)父类的引用指向子类的实例B)接口的引用指向实现类的实例3)多态首先是基于继承的基础上 :如果子类满足父类的要求,那就将父类的方法继承下来(在子类不需要写相关的方法) ;如果子类中不满足父类的要求,那就将父类的方法重写下一遍(在子类需要写相关的方法,而且需要将实现部分改掉) ,这种也就是重写。3)举一个例子。4、抽象类和接口(接口文件与调用的文件必须要放在不同的包里)1)抽象类:A)概念:当一个类中有一个以上的方法只有声明部分,没有实现部分(即是抽象方法) ,那么该类就称为是抽象的类,这个类需要在 class 的前面加上 abstract。B)抽象方法:只有声明部分,没有实现部分(大括号里面
31、没有内容) 。需要在方法的返回类型/void 的前面加上 abstract。C)举一个例子:通过举这样一个例子充分说明抽象类的特性。D)抽象类在哪里用?由谁定义的。是开发组临时为了移交认为给另外一个人去做,是由程序员自己定义的。但是这个人完成不了事情,所以需要将没有完成事情的这个类变成是抽象的类,那么另外一个直接去继承这个抽象类即可。E)不能 new 出对象,但是可以定义一个指向抽象类的引用,而且可以利用这个抽象类的引用指向它真正的实现的子类对象,利用多态调用它子类的方法。Day06 接口2)接口:A)概念:硬件中有相关的接口。同样软件中也有接口。是用来指定规范和标准。是不可以修改的。比如像中
32、国的法律规范也好比是一套规范,不能随便乱改的。B)接口中的特性:它是一个特殊的抽象类。里面的所有的方法都是抽象的(属性或者抽象方法 public void f(),不能有非抽象方法如:public void f();) ,默认接口中的方法是被 public abstract.;里面所有的属性都是常量,默认是被 public static finalC):如果一个类只实现一个接口的部分方法,则该类必须声明为抽象类D)一个类可以在继承一个父类的同时实现一个或者多个接口,但是 extends关键字必须放在 impements 关键字前面。如: class A extends B implements
33、 It1,It3E)不可以 new 接口对象,但是可以定义一个接口引用类型的变量并将其指向实现接口的对象,达到多态的目的。c)接口到底用在哪里,是由谁定义的?接口是一套标准和规范,所以在开发组开发项目之前需要由系统架构师去架构整个系统中的代码详细设计(需要将接口中的属性和方法全部定义好) ,之后需要将这些接口进行打包(生成*.jar 的形式) .接下来生成 api 文档。然后给到开发组中去按照这套接口的标准去开发项目了。d)接口如何定义:通常情况下整个项目是按照模块来进行分工的。必须每个模块定义一个相对应的接口。比如现在需要去定义系统中的用户模块中的接口(I + 类名),用户模块中的业务的接口
34、 IUserService。E)接口定义好之后需要进行打包,给到开发组去调用了。去写一个相关的类去实现这个接口。F)接口的打包:(接口必须是新建 Interface 文件) 右键Export-java-JAR filenext选择相应的文件G)接口文档的生成接口文档的生成:右键点击包ExportjavaJavadocconfigure(找到 jdk 文件下的 lib,然后找到 javadoc.exe)finash.H)如何导入*.jar 包。复制 jar 包 pase 到目录(为了防止文件很乱 可以先新建一个文件 lib 放在下面) 。右键Propertios Java Build pathl
35、ibrariesAdd jars选择相应 src 下 lib 文件。如果导入成功,到最下面 Referenced Libraries 查看Day07 object,String ,this, super,final,static一、Object 类:a) Object 类是类层次结构中根类,所有的类(类库类型的类,自定义的类,数组类型)都去继承 Object,所以这些所有的类即便是没有写任何的属性和方法,都可以去调用一些属性和方法,这些属性和方法就是从 Object 类继承下来。b) Object 类中的 equals 方法指的是比较 2 个 Object 类中的引用所指向的对象(引用或者地址)是否相等。c) Object 类中的 toString 方法:表示的是 Object 类引用所指向地址值(16 进制的字符串) ,这个字符串是不简明不容易读懂的字符串,通常情况,建议所有的子类都需要重写 toString,变成简明或者易于读懂的信息。