java基础笔记整理

来源:互联网 发布:mac升级后能退回吗 编辑:程序博客网 时间:2024/05/26 05:53

1,Java开发环境搭建

常用DOS命令

   d:           访问D盘

   cd + 文件名    访问该文件

cd..          访问上一级

cd\         返回到当前盘符根目录下

cla        清除屏幕

dir        显示当前目录下的文件和子目录信息

 

Java开发环境(JDK)

如何校验JDK安装是否成功的方法。你无需了解为什么要这么做,只需要严格按照下面的步骤操作即可:

1.      在键盘上按:WIN+R键,这时会弹出运行窗口;

2.      在运行窗口中输入:CMD,按“确定”按钮,这时会弹出DOS窗口;

3.      在DOS窗口中输入:JDK安装路径\bin\java.exe。

 

一些常用的存储单位:

1B(字节) = 8bit

1KB = 1024B

1MB = 1024KB

1GB = 1024MB

1TB = 1024GB

1PB = 1024TB

 

 

 

 

 

 

 

 

 

 

 

 

 

需要注意:

(1)       Java 严格区分大小写

(2)       main 是程序的主方法,程序入口

(3)       a++     ++,--运算符后置时,先使用变量a原有值参与运算操作,运算操作完成后,变量a的值自增1或者自减1;

++a        ++,--运算符前置时,先将变量a的值自增1或者自减1,然后使用更新后的新值参与运算操作

&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式

(4)       【cmd下javac 错误: 编码GBK的不可映射字符】

在cmd窗口下执行javac命令是,写为javac -encoding utf-8 -d.  文件名

-encoding utf-8 -d.

(5)       【输出那里,不要随便空格】

(6)       引用数据类型(如Scanner):

1导包:import java.util.Scanner;

2创建对象实例:Scanner sc = newScanner(System.in);

3调用方法:

                   int  i =sc.nextInt(); 用来接收控制台录入的数字

         Strings = sc.next(); 用来接收控制台录入的字符串

(7)      continue语句用在循环语句中,它的作用是终止(跳过)本次循环,执行下一次循环。break结束当前循环; contiune 跳出本次循环

(8)       switch 没有break的话,会按顺序一直执行

(9)       数字中包含7 :  String.valueOf(a).contains("7")

(10)   自定义的引用类型,每次new 都会在堆中开辟一片内存空间

(11)   数组 length     ArrayList 集合 .size( )  (数据任意的添加和删除) 字符串 .length( )

(12)   强制类型转型 int a = 9; char b = (char)a;

1)        Eclipse 快捷键:

2)        内容辅助键  Alt+/

3)        自动补齐main方法  main 然后 Alt+/

4)        自动补齐输出语句  syso 然后 Alt+/

5)        格式化Ctrl+Shift+f

6)        代码区域右键 --Source – Format

7)        自动导包:Ctrl+Shift+o

8)        如果当前类在多个包中都存在,这时候,使用Ctrl+shift+o,进行选择一个包导入即可。

9)        注释

10)    单行注释

11)    加注释: 先选中需要注释的内容,然后 Ctrl+/

12)    取消注释:先选中需要取消注释的内容, 然后 Ctrl+/

13)    多行注释

14)    加注释: 先选中需要注释的内容,然后 Ctrl+Shift+/

15)    取消注释:先选中需要取消注释的内容, 然后 Ctrl+Shift+\

(13)    Ctrl + alt + 下箭头    复制这行代码

(14)                      //调用父类已经存在的功能使用super  super.showNum();    在子类重写这个(和父类的方法是同一个名字)的方法时,在方法类加上(super.方法名())

(15)   多态:普通,抽象,接口。  运行的都是子类定义的方法

成员变量:定义和引用都看父类

方法运行看子类,但是父类也要有定义

静态方法看父类     静态属于类,和对象无关

(16)   类实现(implements)接口,接口继承(extends)多个接口

(17)   每个类都有它的构造方法

(18)   Ctrl +t  查看继承关系

(19)   Final 不可变  不能被继承 除构造方法 都能修饰

(20)   类的方法中没有 非静态    就得加静态static

在类里面,如果方法没有涉及到 成员变量,那就应该加静态 static

静态变量或方法 直接用接口或者类名 调用

(21)   导包  ctrl shift + o          类的全名带着包

(22)   Protected 权限的类  中的方法 或 参数,只能被子类在子类中用

(23)  我们想在类中定义一个静态常量,通常使用public static final修饰的变量来完成定义。此时变量名用全部大写

如:public static final 数据类型 变量名 = 值;

        public static final String COMPANY_NAME="传智播客";

使用类的静态成员时,不需要创建对象,直接使用类名来访问即可

如:Company.COMPANY_NAME

(24)   Instanceof      如: obj  instanceof Person    判断obj是否为Person 类型

(25)   Char  做运算都是先转INT 如:97  = ‘A’   char 记得单引号 ‘  ’

(26)   StringBuffer 线程安全,但速度慢。所以,我们用StringBuilder  速度快,不管安全

(27)   String 的一些用法:

String1.contains("end")       String1中是否包含end

str1.indexOf(str2)             str1 中包含 str2 ,str2 在 str1 中的索引位置

(28)   正则:   ^ 表示“异或”    . 表示任意字符

Matches    split   replaceAll()

\\  表示把后面的 符号  转为 正常表示的符号

如:. 在正则中表示任意字符,\\ . 则仅表示为一个点

(29)   有异常     ctrl 1

(30)   毫秒  1000毫秒 = 1秒

毫秒到天数的换算: 毫秒/1000/60(一分钟60秒)/60(一小时60分钟)/24(一天24小时)

转换为毫秒值                   Date date = new Date();

                   long time = date.getTime();

(31)   转 string      直接 String  s  =  I +“ ”   就可以了

也可以用                   String s3 = String.valueOf(a);

                                   String s2 = Integer.toString(i,2);

String 转 char        char[] c= s.toCharArray();

String 转 byte        “sfsfsf”.getBytes();

(32)   Integer  i = 127; Integer  j = 127; 这个,如果是127以内的数字,虚拟机不会新new 一个对象,而是让 j = i

如果是128及以上的数字,就会重新 new 出一个对象

 

(33)   System.arraycopy(arr1, 2, arr2, 1,3);

复制数组:把 arr1 的元素从索引为2的开始,复制到arr2的索引1的后面,复制3个

 

(34)   集合存对象的时候:当打印array.get[i] 时,实际上打印的是array.get[i] 这个对象的.toString( )    我们可以在这个对象的类中,改写toString( )

(35)    增强for循环     For( int I : arr )   遍历arr 数组,不改数据

(36)   泛型:像ArrayList<String>  arr = new ArrayList<String>(); 这种,后面需要指明类型的

(37)   迭代器:itrator   ollectioncoll = new ArrayList();   Iterator it = coll.iterator();

(38)   泛型的通配符  <?>     限定继承的父类(上限) <?  Extends  Person >

限定该子类的父类(下限) <?  Super  Person >

(39)   数组操作:    int[]  i =  {12,4,34,67,3,43};

String  s = Arrays.toString(i);

(40)   Set<String> set = new HashSet<String>();

Set 无序,无重复元素,只能用迭代器和增强for循环来遍历

(41)   String  大小写转换     String start =sWord[i].substring(0, 1).toUpperCase();

                            Stringend = sWord[i].substring(1).toLowerCase();

(42)   可变参数(本质是数组),随便传几个:Function(int…a){    }

一个方法中只能有一个可变参数;可变参数只能放在参数列表最后

(43)   异常:     throw  new  RuntimeException("run");

RuntimeException 不用在方法的尾巴上加 throws RuntimeException

如:public  static  int  get(int[]arr) throws Exception{    }

(44)   递归: 构造方法禁止递归

(45)   字节流:换行:\r\n  (写在上一句的结尾,或者,下一句的开头)

字符流:换行:FileWriter   fw.newLine();  (具有平台无关性)

(46)   字节流的异常处理:

                   FileOutputStreamfos = null;

                  try{

                            fos= new FileOutputStream("d:\\a.txt");       

                            fos.write('p');           

                            byte[]b = "asdf".getBytes();

                            fos.write(b);

                   }catch(IOException ex){

                            System.out.println(ex);

                            thrownew RuntimeException("文件写入失败");

                   }finally{

                            try{

                                     if(fos!=null)

                                               fos.close();

                            }catch (IOException e) {

                                     thrownew RuntimeException("关闭资源失败");

                            }

                   }

(47)   fos = newFileOutputStream("d:\\a.txt",true);          给该文本文件续写数据

fos.write('p');  

(48)            转换吗?转换流。InputStreamReaderOutputStreamWriter

         高效吗?缓冲区对象。BufferedXXX

InputStream

      FileInputStream

      BufferedInputStream

 

OuputStream

  FileOutputStream

  BufferedOuputStream

 

Writer

 OutputStreamWriter

     FileWriter                      à fw.flush();

     BufferedWriter

 

Reader

         InputStreamReader

    FileReader

         BufferedReader      à特有功能:br.readLine() 可以读出文件的一行

 

(49)   静态方法不允许 访问 非静态。静态方法里面不能写,this,super

(50)   MySQL    auto_increment  自动增长

(51)    

         JDBC操作数据库的步骤

         1.注册驱动

             告知JVM使用的是哪一个数据库的驱动

                   Class.forName("com.mysql.jdbc.Driver");

         2.获得连接

            使用JDBC中的类,完成对MySQL数据库的连接

                   url:"jdbc:mysql://localhost:3306/day07"

            Connection con = DriverManager.getConnection(url,username, password);

         3.获得语句执行平台

           通过连接对象获取对SQL语句的执行者对象

            PreparedStatement pst =  con.prepareStatement(sql);

         4.执行sql语句

           使用执行者对象,向数据库执行SQL语句

           获取到数据库的执行后的结果

             ResultSet rs = pst.executeQuery();  或者 pst.executeUpdate();

         5.处理结果

                   rs.close();

                    stat.close();

                    con.close();

         6.释放资源  一堆close()

 

使用 properties 配置时,该文件要放在src 下面

(52)   Alt + shift + m  把抽取的代码放进一个方法中

(53)   Ctrl + 2  调用的一个新的方法,左边“  类名  自己取的名字“  会自动出现

(54)   用 resourceBundle 取properties 文件中的值,properties 的key命名首字母小写

块编辑   alt + shift + a      全变大写  Ctrl + shift + x   全变小写  Ctrl + shift + y

(55)   Class  里面的常量  命名要全部大写

(56)   127.0.0.1   本机地址

(57)   Tomcat 部署

发布:在底下server部分中,右键选  add and remove

(58)    

(59)    

(60)    

(61)    

(62)    

(63)    

(64)    

(65)    

(66)    

(67)    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

2-----------------数据库连接-----------------------------

JDBC(配置文件àJDBCUtils类连接数据库à使用JDBCUtils操作)

导包:mysql-connector-java-5.1.39-bin.jar

步骤一:创建Java项目,引入mysql的驱动包.

步骤二:编写程序

步骤三:注册驱动

步骤四:获得连接

步骤五:执行SQL

步骤六:释放资源

 

 

配置文件 (jdbc.properties)

driverClassName=com.mysql.jdbc.Driver

url=jdbc:mysql:///day07

     (url=jdbc:mysql://localhost:3306/base1)

username=root

password=root

步骤:注册驱动à获取连接à释放驱动

 

 

JDBCUtils

1,定义

static final String DRIVERCLASS;

    static final String URL;

    static final String USERNAME;

    static final String PASSWORD;

2,jdbc.properties获取数据

    static{

       //获取数据

       ResourceBundle rb =ResourceBundle.getBundle("jdbc");

       DRIVERCLASS = rb.getString("driverClassName");

       URL = rb.getString("url");

       USERNAME = rb.getString("username");

       PASSWORD = rb.getString("password");  

    }

3获取驱动

static{

       try {

           //获取驱动

           Class.forName(DRIVERCLASS);

       } catch (ClassNotFoundException e) {

           e.printStackTrace();

       }

    }

4连接数据库

    public static Connection getConnection(){

       try{

           //连接数据库

           Return DriverManager.getConnection(URL,USERNAME,PASSWORD);

       }catch(Exception ex){

           System.out.println(ex+".222");

           throw new RuntimeException();

       }

    }

5,释放连接,关闭

    /**

     * 释放连接,关闭

     * @param con

     * @param pre

     * @param rs

     */

    public static void close(Connection con,PreparedStatement pre,ResultSet rs){

       conClose(con);

       preClose(pre);

       reClose(rs);

    }

 

    /**

     * 释放Connection连接     (其他两个与这个类似)

     * @param con

     */

    public static void conClose(Connection con){

       if(con !=null){

           try{

              con.close();

           }catch(Exception ex){

              ex.printStackTrace();

           }

       }

    }

 

 

测试:

           Connection con = JDBCUtils.getConnection();

           String sql = "select * from student";

        PreparedStatement    pre = con.prepareStatement(sql);

           ResultSet re = pre.executeQuery();

           while(re.next()){

              System.out.println(re.getString("name"));

            }

 

 

 

 

 

 

连接池操作(常用连接池:DBCP,C3P0)

DBCP:(理解) apache组织

 

 

 

1.导入jar包:commons-dbcp-1.4.jar和commons-pool-1.5.6.jar

        2.使用api

            a.硬编码

                    //创建连接池

                    BasicDataSource ds = new BasicDataSource();

                   

                    //配置信息

                    ds.setDriverClassName("com.mysql.jdbc.Driver");

                    ds.setUrl("jdbc:mysql:///day07");

                    ds.setUsername("root");

                    ds.setPassword("1234");

            b.配置文件

                    实现编写一个properties文件

                    //存放配置文件

                    Properties prop = new Properties();

                    prop.load(new FileInputStream("src/dbcp.properties"));

                    //设置

//prop.setProperty("driverClassName","com.mysql.jdbc.Driver"); 

     //创建连接池

      DataSource ds = new BasicDataSourceFactory().createDataSource(prop);

 

C3P0

导包: c3p0-0.9.1.2.jar

  ComboPooledDataSource bs = new ComboPooledDataSource("mydemo"); 

       Connection conn = bs.getConnection();

       String sql = "insert into student values(?,?)";

       PreparedStatement pre = conn.prepareStatement(sql);

       pre.setInt(1,8);

       pre.setString(2, "bob");

       int i = pre.executeUpdate();

       System.out.println(i);

配置文件:c3p0-config.xml

<c3p0-config>

    <!-- 默认配置,如果没有指定则使用这个配置 -->

    <default-config>

       <!-- 基本配置 -->

       <property name="driverClass">com.mysql.jdbc.Driver</property>

       <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/base1</property>

       <property name="user">root</property>

       <property name="password">root</property>

   

       <!--扩展配置-->

       <property name="checkoutTimeout">30000</property>

       <property name="idleConnectionTestPeriod">30</property>

        <property name="initialPoolSize">10</property>

       <property name="maxIdleTime">30</property>

       <property name="maxPoolSize">100</property>

       <property name="minPoolSize">10</property>

       <property name="maxStatements">200</property>

    </default-config>

   

    <!-- 命名的配置 -->

    <named-config name="mydemo">

       <property name="driverClass">com.mysql.jdbc.Driver</property>

       <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/base1</property>

       <property name="user">root</property>

       <property name="password">root</property>

      

       <!-- 如果池中数据连接不够时一次增长多少个 -->

       <property name="acquireIncrement">5</property>

       <property name="initialPoolSize">20</property>

       <property name="minPoolSize">10</property>

       <property name="maxPoolSize">40</property>

       <property name="maxStatements">20</property>

       <property name="maxStatementsPerConnection">5</property>

    </named-config>

</c3p0-config>

 

 

 

DBUtils: QueryRunner  QueryRunner

update(String sql, Object... params) ,执行更新数据

query(String sql, ResultSetHandler<T> rsh, Object... params) ,执行查询

         重要的结果集处理类:BeanHandler,BeanListHandler,MapListHandler,ScalarHandler

         closeQuietly(Connectionconn) 关闭连接,如果有异常try后不抛。

         是apache组织的一个工具类,jdbc的框架,更方便我们使用

         使用步骤:

                   1.导入jar包(commons-dbutils-1.4.jar)

                   2.创建一个queryrunner类

                     queryrunner作用:操作sql语句

                                     构造方法:

                                               new QueryRunner(Datasource ds);

                   3.编写sql

                   4.执行sql

                            query(..):执行r操作

                            update(...):执行cud操作

 

 

 

 

 

 

 

        

        

        

 

原创粉丝点击