java基础分类

经常看到许多人问如何配置JDK和JSP,现在我把方法总结下,希望对大家有所帮助。
第一步:下载jdk和tomcat
第二步:安装和配置你的jdk和tomcat:执行jdk和tomcat的安装程序,然后设置按照路径进行安装即可。
1.安装j2sdk以后,需要配置一下环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的jdk安装在c:\jdk1.6):
JAVA_HOME=c:\jdk1.6
classpath=. ;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(.;一定不能少,因为它代表当前路径)
path=%JAVA_HOME%\bin
接着可以写一个简单的java程序来测试JDK是否已安装成功:
public class Test{
public static void main(String args[]){
System.out.println("This is a test program.");
}
}

java_home=C:\Program Files\Java\jdk1.6.0
classpath=.;%java_home%\lib\dt.jar;%java_home%\lib\tools.jar;
path =%java_home%\bin;
-------------------------------------------------------------------------------------------------------------------
1、如何编译执行java程序
   1、javac -d . 程序的名称.java
   2、执行
      java 类的全路径
   例如:
package com.cstp.java01;

public class Test
{
 public static void main(String[] args)
 {
  System.out.println("Hello World!");
 }
}

编译:
   javac -d . Test.java
   java com.cstp.java01.Test

2、package的用法:
   公司名称.项目名称.模块名称

3、类的命名方式:驼峰命名法
   1、类名:首字母大写,第二个单词首字母要大写
      HelloWord
   2、变量命名:
      首字母要小写,第二个单词首字母要大写

4、保留字:没有定义用途,但保留备用。
   goto、const

5、变量的概念:
   1、使用什么类型的变量
   2、变量的作用域:全局变量和局部变量

6、按所属的数据类型划分:
基本类型变量:持有原始值。(真正的原始数据)
            int long byte char float double boolean short
引用类型变量:持有引用值。(某个对象的引用,不是该对象本身)

7、数据类型之间的转换
   基本数据类型之间的转换
-----------------------------------------------------------------------------------------------------------------------
1、对象的方法
   概念:解决某一件事情的途径或者手段
   从面相对象角度:是接收外部信息的入口
2、定义方法的时候考虑
   1、是否有返回类型
   2、是否有参数类型和个数

3、递归算法:
   方法本身调用方法
   遍历未知的文件夹,树型结构
   递归必须要有参数

4、java基础:
   逻辑判断
   if else
   else if

   switch(val){
     case 条件1:{
       break;
     }
     case 条件2:{
       break;
     }
     default:
     break;
   }

   循环:
   for();
   while();
   do{
  
   } while();
5、方法的调用:
   格式:public 返回类型(void) 方法名(参数类型,参数类型){
       
  return  返回值;
   }

6、递归调用:
   方法本身调用自己:
   public int sum(int n) {
  if (n == 1 || n == 0) {
   return 1;
  } else {
   return n + sum(n - 1);
  }
 }
----------------------------------------------------------------------------------------------------------------------------

1、重写和重载
2、继承多态封装
3、接口:

3、方法名称相同,参数列表不同(个数,次序,类型)
   1、重载的好处?在不修改方法名称的情况下,需要重载

4、重写:在不同的类之间实现方法的重写,往往是继承关系

继承:
    1、为了防止代码的重复性,可调用性
       1、从父类的角度考虑:父类尽量实现方法,供子类调用,不要出现太多的抽象方法,
       2、子类尽量扩充父类的方法,可以重写
       3、super关键字的使用
       4、this关键字表示在子类中使用

多态:
在方法传递参数的时候,通常传递的是接口或者是抽象类:只需要将该接口或者抽象类的子类实例化就可以实现不同的功能

public void print(Printer printer){
   printer.print();
}
Printer  是接口或者是抽象类


封装:
private 修饰私有变量/属性
对外提供公有的访问方法:


基本数据类型的包装类:
1、主要完成对不同数据类型的转换
2、将一个基本数据类型包装成对象类型、转换规则:从小的往大的转换

=----------------------------------------------------------------------------------------------------------------------------------
1、继承:
   继承概念:
   儿子继承父亲:财产、权利、事业、长相、血缘
   好处:父类有的东西,子类直接可以使用,站在子类的角度:不用编写太多的代码:

2、继承的关键字: extends
   A extends B

3、类与类之间的关系有哪几种?
 有:has-a 关系:继承关系
 是:is-a关系:调用关系
 里氏替换原则:如果A类中有和B类相同的方法,把相同的方法抽取出来到C类中,让A类和B类分别继承C类
例子:

public class Father {


 public Father() {
  // TODO Auto-generated constructor stub
 }

 public void buyHouse(){
  System.out.println("买房子");
 }
 
 public void buyCar(){
  System.out.println("买车子");
 }
}


public void feedChild(){
  System.out.println("养孩子");
 }
 
 public void teach(){
  System.out.println("我会教书!!");
 }


 Father son1 = new Son1();
  //调用父类的方法
  //父类的引用指向子类的对象
  son1.buyCar();
  son1.buyHouse();
  System.out.println("******************************");
  
  Son1 s = new Son1();
  s.feedChild();
  s.teach();
  //父类的方法
  s.buyCar();
  s.buyHouse();
//  Father son2 = new Son2();
//  //调用父类的方法
//  son2.buyCar();
//  son2.buyHouse();

2、哪个类的构造方法会先被实例化:
   1、越是靠近Object类的对象先被实例化:
   2、super关键字:可以调用父类的构造方法/包含有参数和无参数
      this():表示本类调用
      super可以使用在方法中:super.buyCar();super.方法名();直接调用父类的方法
     
 3、重载和重写:
 重载:仅仅在本类中使用 overloading
 重写:是在不同的类中使用,而且都是继承关系:覆盖 overwriting
       1、参数类型和个数不能改变,名称不能变
       2、好处:重新改造父类的方法
       3、什么时候需要方法的重写:继承父类的方法,但是需要扩充功能

抽象类:
     抽象类:public abstract class 类名
      1、为什么会存在抽象类:
         类本身不能实现的方法,那么这个类就是抽象类:
  抽象类是不能直接new出来的
  一个类中如果有抽象的方法,那么这个类必然是抽象类,反之未必成立
      2、好处:
         1、站在父类的角度可以不用实现该方法,实际编写代码尽量不要声明称抽象的
         2、对子类有着指引的作用,如果子类不实现该抽象方法,那么也是抽象类

3、接口:
   接口的定义:接口是一个契约,实现类是契约的执行者,接口不是会轻易改变,接口中定义的方法,实现类要坚决执行
   使用接口的好处:解决代码耦合度的问题。
   关键字:interface
   接口中定义的方法都是抽象的:
   接口中定义的变量都是静态的
   类 implements 接口

   接口和抽象类的区别:
   抽象类允许有普通方法存在
   接口不允许有普通方法存在

   抽象类、接口、普通的类的关系:
   接口--->>抽象类--->>普通类

   为什么要定义成接口:
   1、接口不需要实现任何东西,只是给实现类指明方向
   2、如果是接口,那么找已知实现类,如果该已知实现类是一个抽象类,找基类
 
4、多态:
   1、什么是多态?一个事物在不同的条件下有多种形态?
   2、开发中如何实现多态:实现某一个方法的时候,参数传递一个抽象类或者是接口?
   3、使用多态的好处:调用同一个方法,可以实现多种功能?

5、final关键字使用:
   1、如果使用final修饰一个变量,那么是常量
   2、如果使用final修饰一个方法,该方法不能被重写
   3、如果使用final修饰一个类,那么该类不能被继承。
   4、如果使用final修饰一个形参,那么该参数不能被修改
   ------------------------------------------------------------------------------------------------------------------------ 1、异常是程序在运行期发生的不正常的事件,它会打断指令的正常执行流程。
    异常就是程序出现错误
    2、Java程序在执行过程中如果出现异常,会自动生成一个异常类对象,该异常对象将被自动提交给JVM,
       这个过程称为抛出(throw)异常
       当JVM接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,
       这一过程称为捕获(catch)异常和处理异常。
 3、所有的异常信息都是继承Throwable 该对象有两个子类:Error和Exception
    Error是不可阻抗的异常,一般不处理
    Exception 程序运行的时候出现的异常信息,是我们要处理的
    Exception 分为受检测的异常信息和非受检测的异常信息
    受检测的异常信息是表示程序还没有执行,就强制处理异常
    非受检测的异常信息表示程序在运行的过程中出现错误信息 RuntimeException

    处理异常的机制:需要用一个确定类型的异常来捕获异常信息:
    try{
      如果程序没有异常,那么会执行try中的代码
    }catch(异常类型 ){
      如果有了异常,会执行catch的代码
    }finally{
      //不管有没有异常信息,都会执行finally的代码片段
      //用于关闭数据的链接,读取文件的形式
    }
    捕获异常信息的时候要确定要一个精确的类型

    记住常用的异常信息:
    1、SQLException 数据库异常
    2、IOException 读取文件异常
    3、ClassNotFoundException 找不到该类的异常
    4、NullPointerException 空指针异常信息
    5、ArithmeticException 数学运算异常
    6、ClassCastException 类型转换异常
    7、ArrayIndexOutOfBundsException 数组越界的异常信息

    使用throw和throws

    throw关键字用在方法代码中主动抛出一个异常

    throws用来声明一个方法可能会抛出的所有异常。跟在方法签名的后面

    什么时候需要抛出异常信息?
    在方法参数传递的过程中,如果出现错误,应该把错误的信息抛给调用该方法的人,
    什么时候需要捕获异常信息?
    如果程序出错了,不需要把错误信息提示给调用者,

    throw和throws 抛出的异常信息的范围,必须要小于等于声明异常的范围

    自定义异常信息:
    自己定义的异常信息,就是JDK中无法提供的异常机制。

    总结:
    如何使用异常信息:
    1、
-------------------------------------------------------------------------------------------------------------------------------------------------------
1、如何声明数组:
       int[] a = new int[4];
2、如何给数组赋值:
       int[] a = new int[2];
      a[0] = 1;
      a[1] = 2;
      int[] a = {1,2,3,4,5};
3、数组的特点:
       下标从0开始,长度:数组个数-1;
4、如何访问数组:
       for(int i=0;i<数组.length();i++)

------------------------------------------------------------------------------------------------------------------------
1、基本数据类型包装类
   1、所有基本数据类型都能很方便的和对应的包装类相互转换
   2、将基本数据类型包装成对象,可以调用该对象的方法,实现转换功能
   3、Integer(int value)
  
2、字符串的操作:
   java.lang.String代表不可变的字符序列。
        字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。
          因为 String 对象是不可变的,所以可以共享
    比较两个对象:
    equals和==
    equals比较的是值,==比较是地址:
          哈希值:表示变量在内存中存储的分布图,值越大,重复几率越小
    hashCode相等,equals 相等
    equals相等,hashCode不一定相等
          字符串的索引值从0开始
          ---------------------------------------------------------------------------------------------------------------
1、与正则表达式相关的方法
   1、主要功能是用来操作字符串的
   2、将String str="asd23fasdf23asdfa23sd4fasd4fa45sdf"; 出现数字的字符替换成#
2、什么是转义字符:
  
   字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
 
预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
  
Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次

 
Logical 运算符
XY X 后跟 Y
X|Y X 或 Y
(X) X,作为捕获组
--------------------------------------------------------------------------------------------------------------
1、StringBuffer
   一个String对象的长度是固定的,不能改变它的内容,或者是附加新的字符到String对象中。
您也许会使用+来串联字符串以达到附加新字符或字符串的目的,但+会产生一个新的String对象。
如果程序对这种附加字符串的需求很频繁,并不建议使用+来进行字符串的串联。
应该使用java.lang.StringBuffer类。
2、StringBuffer 可以实现对字符串的追加,删除、插入、查找、替换
   1、实现删除功能:
               把所有大写字母删除掉
      String str = "abcmGHLnopqrstuvwxyzABCD";
      在指定的字符串位置插入特殊的字符
     在所有出现a的地方之后插入 #
      String str = "asdfasdfasdfasdfasdfasdf";
     

3、StringBuilder和StringBuffer很类似:
   StringBuffer 是线程安全的
   StringBuilder 非线程安全 效率高
   =------------------------------------------------------------------------------------------------------------------------
1、输入输出流:
   主要是对文件进行操作(持久化):
   1、读取文件内容、修改文件内容、删除文件(内容)
   2、拷贝文件、移动文件 创建文件夹
   3、递归文件
   4、如果文件类型不一致,读取文件的方式是不同的。
   I:InputStream表示输入流,表示要读取文件,需要源路径
   O:OutputStream 表示输出流,写文件 需要目标路径
   相对路径:是相对于某一个文件夹的路径:
   绝对路径:是相对于某一个盘符的路径:

2、java.io.File类:文件系统类:
   1、可以读取文件属性:可读、可写、读写
   2、删除文件
   3、遍历某一个文件夹下的所有文件
   4、判断某一个目录下的文件是否存在
   5、返回此抽象路径名的绝对路径名字符串
   6、  测试此抽象路径名表示的文件是否是一个目录。
   7、创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。

3、递归遍历文件夹:

转载于:https://www.cnblogs.com/hansha-12/archive/2012/04/25/2469748.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值