java学习第三十二天内容

1.前一天重点内容复习

        TCP客户端编码步骤

                创建客户端Socket对象

                获取到文件流输入

                获取到Socket对象输出流

                将文件输入流内容写入到Socket对象输出流中

                通知服务器端没有更多数据传入

                获取到Socket对象输入流

                读取Socket对象输入流内容

                将读到的Socket对象输入流内容转为字符串,打印出来

        TCP服务端编码步骤

                创建服务端Socket对象

                监听端口

                获取端口输入流

                获取文件输出流

                将端口输入流中的数据写入文件输出流

                获取端口输出流

                将反馈信息写入端口输出流

        获取字节码文件的方式

                通过使用Object类中的getClass()方法

                        对象.getClass()

                任意java类型的class属性可以获取

                        类名.class

                反射的静态功能forName

                        public static Class forName(String pathname)

                                pathname为当前类的全限定名称(包名.类名)

        线程状态有几种

                6种,分别是NEW新建、RUNNABLE运行、BLOCKED阻塞、WAITTING死死等待、TIMED_WAITTING超时等待、TERMINATED死亡

        处理异常方式

                两种,throws抛出异常和try-cathch捕获异常

                try-catch可以变形为try-catch-catch或者try-finally

                        finally中的代码一般为释放系统相关资源的代码,一定会执行,除非在此之前jvm推出了

                throws和throw的区别

                        throws:在方法上抛出异常,可以抛多个异常,中间用‘,’隔开,异常肯出现,交给调用者处理

                        throw:在方法体中抛出,底层原码多在语句体中处理,后面跟异常对象new XXXException(),异常执行某段代码一定会出现,由方法体来处理

2.反射

        核心思想:就是通过某个类去获得此类字节码文件对象,之后就可以通过字节码文件对象的Constructor方法来获取该类的构造方法,以此来创造该类实例对象,也可以通过字节码文件对象的Field获取到成员变量,以此来给该类成员变量赋值,也可以通过字节码文件对象的Method()方法来获取成员方法,以此来访问该类成员方法

       反射操作java代码阶段: java代码经过三个阶段,源文件阶段,class文件阶段和运行阶段,反射操作java代码的编译时期的class阶段

        相关方法:

                public String getName():获取字节码文件的全限定名称

                public Constructors<?>[] getConstructors() throws SecurityException:获取类中所有的公共构造方法的类对象

                public Constructors<?>[] getDeclaredConstructors() throws SecurityException:获取类中所有的构造方法的类对象

                public Constructor<T> getConstructors(Class<?> parameterTypes) throws NoSuchMethodException,SecurityException:获取类中指定的公共构造方法的类对象,参数为字节码文件对象

                public T newInstance(Object... initargs):创建当前类的实例,参数为可变参数,作用为描述给构造方法的实际参数,这个方法可以由字节码文件对象调用,也可以先创建构造方法类对象,再用构造方法类对象来调用此方法

                public void setAccessible(boolean flag) throws SecurityException:参数为true,取消java语言访问检查

                public Field[] getFields() throws SecurityException:获取当前类的公共字段类对象 

                public Field[] getDeclaredFields() throws SecurityException:获取当前类的所有字段类对象 

                public Field getField(String name) throws NoSuchFieldException,SecurityException:获取当前类指定的公共字段类对象 

                public void set(Object obj, Object value) throws IllegalArgumentException,IllegalAccessException:给指定的类对象实例赋值,第一个参数为该类的具体对象,第二个参数为赋值的值

                public Method[] getDeclaredMethods() throws SecurityException:获取当前类中所有成员方法,不包括继承方法

                public Method[] getMethods() throws SecurityException:获取当前类中所有公共的成员方法,包括继承方法

                public Method getMethod(String name,Class(?)...parameterTypes) throws NoSuchMethodException,SecurityException throws SecurityException:获取当前类中指定的的成员方法,参数1为方法名,参数2为可变参数,如果无参则不需要,如果带参则需要写上参数类型的class

                public Object invoke(Object obj , Object... args):调用当前类的成员方法,参数1为当前类的对象,参数2为可变参数,作用为给形式参数赋值

                public Method getDeclaredMethod(String name,Class(?)...parameterTypes) throws NoSuchMethodException,SecurityException throws SecurityException:获取当前类中指定的的成员方法类对象,包括私有的和保护的和默认修饰的

        通过反射创建类对象步骤:

                1.获取类的字节码文件对象

                 2.获取构造方法Constructor类对象

                3.通过构造方法Constructor类对象来创建当前类的实例

                4.输出对象名称

3.数据库

        数据存储方式:

                局部变量/成员变量:在类中方法外

                StringBuffer:字符串缓冲区,可以存储任意字符序列,实际上还是将其转为String类型

                集合:将数据存储进入Collection或者Map<K,V>

                IO流:将其存入文件

                数据库:

                        关系型:Mysql,Oracle,SqlServer,mariaDB,SQLite

                        非关系型:redis,MongoDB

        数据库语法:

                DDL:数据库定义语句

                        查询所有库:show databases;

                        创建库:create database 库名;或者create database if no exists 库名;

                DML:数据库操作语句

                SQL:结构化查询语句

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值