强语言与弱语言/加载配置文件

静态语言和动态语言的区别

基本概念

静态语言(强类型语言)

静态语言是在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型。 例如:C++、Java、Delphi、C#等。

动态语言(弱类型语言)

动态语言是在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。 例如PHP/ASP/Ruby/Python/Perl/ABAP/SQL/JavaScript/Unix Shell等等。

强类型定义语言

强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。

弱类型定义语言

数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。

两者区别

特性

强类型语言是一旦变量的类型被确定,就不能转化的语言。 弱类型语言则反之,一个变量的类型是由其应用上下文确定的。

静态语言的优势

  1. 由于类型的强制声明,使得IDE有很强的代码感知能力,故,在实现复杂的业务逻辑、开发大型商业系统、以及那些生命周期很长的应用中,依托IDE对系统的开发很有保障;

  2. 由于静态语言相对比较封闭,使得第三方开发包对代码的侵害性可以降到最低;

动态语言的优势

    1. 思维不受束缚,可以任意发挥,把更多的精力放在产品本身上;

    2. 集中思考业务逻辑实现,思考过程即实现过程;

 

 

Class对象功能:

  • 获取功能:

    1.获取成员变量们

    • Field[] getFields() :获取所有public修饰的成员变量

    • Field getField(String name) 获取指定名称的 public修饰的成员变量

    • Field[] getDeclaredFields() 获取所有的成员变量,不考虑修饰符

    • Field getDeclaredField(String name)

    2.获取构造方法们

    • Constructor<?>[] getConstructors()

    • Constructor<T> getConstructor(类<?>... parameterTypes)

    • Constructor<T> getDeclaredConstructor(类<?>... parameterTypes)

    • Constructor<?>[] getDeclaredConstructors()

    3.获取成员方法们:

    • Method[] getMethods()

    • Method getMethod(String name, 类<?>... parameterTypes)

    • Method[] getDeclaredMethods()

    • Method getDeclaredMethod(String name, 类<?>... parameterTypes)

      获取全类名

    • String getName()

 

 

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

/**
 * jdbc读到内存中
 * 体验反射:
 */
public class DBUtils {
    static Properties properties = new Properties();
    private static  String DRIVER;
    private static  String URL;
    private static  String USER;
    private static  String PASSWORD;
    public static void main(String[] args) throws IOException {
        System.out.println("main:"+"hello");
        Connection connection=DBUtils.getConnection(URL,USER,PASSWORD);
    }


   static {
       String path="jdbc.properties";
       InputStream is= DBUtils.class.getClassLoader().getResourceAsStream(path);
       try {
           properties.load(is);
       } catch (IOException e) {
           e.printStackTrace();
       }
       DRIVER=  properties.getProperty("driver");
       URL= properties.getProperty("url");
       USER= properties.getProperty("user");
       PASSWORD=properties.getProperty("password");
       System.out.println("DRIVER:"+DRIVER+"URL:"+URL+"");
       try {
           Class.forName(DRIVER);
       } catch (ClassNotFoundException e) {
           e.printStackTrace();
       }
   }
   static  Connection connection= null;
   public static Connection getConnection(String url,String user,String password){
       try {
           connection= DriverManager.getConnection(url,user,password);
           System.out.println("connection:"+connection);
       } catch (SQLException e) {
           e.printStackTrace();
       }catch (Exception e){
           e.printStackTrace();
       }
       return connection;
   }

}

 

创建properties配置文件jdbc.properties:

 

1 driver=com.mysql.jdbc.Driver
2 url=jdbc:mysql://127.0.0.1:3306/fx3?useUnicode=true&characterEncoding=UTF-8
3 user=root
4 password=123456

 

 

 

 运行效果图:

 

 

 

 

 

心得:

  世界上只有想不通的人,没有走不通的路。人生就像是一个马尔可夫链,你的未来取决于你当下正在做的事,而无关于过去做完的事。

posted @ 2020-08-23 19:01  堇墨傾城  阅读(155)  评论(0编辑  收藏  举报