PlayJava Day029】的更多相关文章

1.Java Reflection:Reflection(反射)是被视为动态语言的关键 反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息 并能直接操作任意对象的内部属性及方法 2.Java反射机制提供的功能: ①在运行时判断任意一个对象所属的类 ②在运行时构造任意一个类的对象 ③在运行时判断任意一个类所具有的成员变量和方法 ④在运行时调用任意一个对象的成员变量和方法 ⑤生成动态代理(★) 3.Class类:对于每个类而言,JRE都为其保留一个不变的Class类型的对…
SSM框架 SSM是Spring + Spring MVC + MyBatis的缩写,是一个继SSH之后目前比较主流的JavaEE框架,适用于搭建各种企业级应用系统. Spring Spring是一个开源的.于2003年兴起的.轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来,是为了解决企业应用开发的复杂性而创建的.Spring使用基本的JavaBean来完成各种事情…
1.实例化Class类对象 //第一种,可靠高效 Class c0 = String.class ; //第二种,使用对象 Class c1 = "zhangsan".getClass() ; //第三种,常用,可能会抛出ClassNotFoundException Class c2 = Class.forName("java.lang.String") ; //第四种,不常用 ClassLoader cl = this.getClass().getClassLoa…
1.网络程序中套接字(Socket)用于将应用程序与端口连接起来 套接字是一个假想的连接装置,就像插插头的设备”插座“,用于连接电器与电线,如下所示 客户端:应用程序 <----> Socket <----> Port <-- 服务器:应用程序 <----> Socket <----> Port <-- Java将套接字抽象化为类,程序设计者只需创建Socket类对象,即可使用套接字 简单使用,如:①获得内网所有的IP地址 ②解析网页中的内容 2…
进程状态 1.创建状态:在程序中用构造方法创建了一个线程对象后,新的线程对象便处于新建状态 此时,它已经有了相应的内存空间和其他资源,但还处于不可运行状态 新建一个线程对象可采用Thread类的构造方法来实现,例如:Thread thread = new Thread() ; 2.就绪状态:新建线程对象后,调用该线程的start()方法就可以启动线程 当线程启动时,线程进入就绪状态,此时线程将进入线程队列排队,等待CPU服务 这表明它已经具备了运行条件 3.运行状态:当就绪状态的线程被调用并获得…
1.泛型:指代任意对象类型 public class CC<T> {} C<Integer> c = new C<Integer>(1) ; 2.限制泛型:用于继承关系 public class Demo<T extends FatherClass> {} Demo<Son> demo = new Demo<Son>(new Son()) ; //此处Son可为SonClass or FatherClass,其他类不行 Son son…
JTable 用JTable类可以以表格的形式显示和编辑数据 JTable类的对象并不存储数据,它只是数据的表现 MVC 数据.表现和控制三者分离,各负其责 M = Model(模型) V = View(表现) C = Control(控制) 模型:保存和维护数据,提供接口让外部修改数据,通知表现需要刷新 表现:从模型获得数据,根据数据画出表现 控制:从用户得到输入,根据输入调整数据 异常补充: 当异常声明遇到继承关系: ①当覆盖一个函数的时候,子类不能声明抛出比父类的版本更多的异常 ②在子类的…
造型Cast补充: 子类的对象可以赋值给父类的变量 注意:Java中不存在对象对对象的赋值 父类的对象不能赋值给子类的变量 例: Vechicle v ; Car c = new Car() ; v = c ; //可以 c = v ; //编译错误 //可以用造型: c = (Car)v ; //只有当v这个变量实际管理的是Car才行 用括号围起类型放在值的前面 对象本身并没有发生任何变化 所以不是“类型转换” 运行时有机制来检查这样的转化是否合理 ----> ClassCastExcepti…
进程:进程是程序的一次动态执行过程,它经历了从代码加载.执行到执行完毕的一个完整过程,这个过程也是进程本身从产生.到发展到最终消亡的过程 多进程:多进程操作系统能同时运行多个进程(程序) 多线程:是指一个进程在执行过程中可以产生多个线程,这些线程可以同时存在.同时运行,一个进程可能包含了多个同时执行的线程 线程的优先级别: Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程 线程调度器按照线程的优先级决定应调度哪个线程来执行 线程的优先级用数字表示,范围从1到10,一个线程的缺省…
List接口: ArrayList:数组集合,底层使用数组,查询快,增删慢 LinkedList:链表集合,底层使用链表形式,查询慢,增删快 注意: 对于随机访问get和set,ArrayList优于LinkedList,因为LinkedList要移动指针 对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据 Map:采用键值对的方式进行存值 key ----> value:两者一一对应 key使用Set集合进行存储 ----> 避免重复 T…
容器: Collection接口:定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式 List:存储数据有序且可重复 ----> ArrayList Set:存储数据无序且不可重复 ----> HashSet Collection方法举例:容器类对象在调用remove.contains等方法时需要比较对象是否相等,会涉及到对象类型的equals方法和hashCode方法 对于自定义的类型,需要重写equals和hashCode方法以实现自定义的对象相等规则 注意:相等的对象应…
1.异常Exception补充: ①错误(Error)指的是致命性错误,一般无法处理 ②异常以类的形式封装 程序可以处理的异常对应的类是java.lang.Exception及其子类 运行时异常对应的类是java.lang.RuntimeException 错误异常对应的类是java.lang.Error ③异常相关类的继承树: java.lang.Object -java.lang.Throwable -java.lang.Error -java.lang.Exception -java.io…
今日所学: /* 2019.08.19开始学习,此为补档. */ 1.this: ①this是成员方法的一个特殊的固有的本地变量,它表达了调用这个方法的那个对象. ②在成员方法内部直接调用自己(this)的其他方法. 2.本地(局部)变量: ①定义在方法内部的变量是本地变量. ②本地变量的生存期和作用域都是方法内部. ③成员变量的生存期是对象的生存期,作用域是类内部的成员方法. 3.构造方法:如果有一个成员方法的名字和类名完全相同,则在创建这个类的每一个对象的时候会自动调用这个方法. 4.pri…
今日所学: /* 2019.08.19开始学习,此为补档. */ File 文件或目录的抽象表示 public File(String parent , String child) 传入父目录地址,传入子文件名 public File(File parent , String child) 传入父目录对象,传入子文件名 1.获取当前系统的分隔符:属性 public static final String separator 2.创建一个新文件 public boolean createNewFi…
今日所学: /* 2019.08.19开始学习,此为补档. */ 1.数组变量 a.数组变量是数组的管理者而非数组本身 b.数组必须创建出来然后交给数组变量来管理 c.数组变量之间的赋值是管理权限的赋予 d.数组变量之间的比较是判断是否管理同一个数组 2.String是一个类,String的变量是对象的管理者而非所有者 ----> 类比数组 3.不可变的String:所有的字符串都是不可变的,对它们的操作的结果都是制造新的字符串出来 4.in.next() ; ----> 读入一个单词 in.…
今日所学: /* 2019.08.19开始学习,此为补档. */ 数组 1.一维数组:数据类型[ ] 变量名 = new 数据类型[长度] 获取长度:array.length 在使用下标时确保不超过array.length - 1,否则容易出现ArrayIndexOutOfBoundsException运行错误 2.二维数组:数据类型[ ][ ] 变量名 = new 数据类型[长度row][长度col] 例如:存储若干个学生的三门课程的成绩 小明:语文,数学,英语 小强:语文,数学,英语 小红:…
今日所学: /* 2019.08.19开始学习,此为补档. */ StringBuffer 定义: 可变字符序列 - 线程安全的 作用:基本与String相同,也是用于描述字符串 与String的区别: 自带缓冲区(8K),所有的数据拼接操作都在缓冲区中进行,不会在常量池中产生多余的数据 如果当前的数据需要大量的拼接操作,一般情况选用StringBuffer,而不选用String 方法: //在当前字符串(源字符串)的末尾处添加一个字符串,返回添加后的字符串拷贝 public StringBuf…
今日所学: /* 2019.08.19开始学习,此为补档. */ 1.Random生成的随机数是伪随机数,因为只要两个Random对象的种子相同,而且方法的调用顺序也相同,则产生的随机数相同. Random r1 = new Random() ; //以当前时间为默认种子 Random r2 = new Random(1) ; //以指定的种子值进行 2.Math.random():返回的数值是0~1的double型数值. int max = 100 , min = 1 ; int random…
今日所学: /* 2019.08.19开始学习,此为补档. */ 1.BufferedImage:是Image的一个子类,两者的主要作用就是将一副图片加载到内存中,即图像缓冲区. 对于本地图片: File file = new File("xxx.png") ; BufferedImage image = ImageIO.read(file) ; 对于网络图片: URL url = new URL("https://******") ; BufferedImage…
今日所学: /* 2019.08.19开始学习,此为补档. */ JPanel和JFrame 1.JFrame是最底层,JPanel是置于其面上,同一个界面只有一个JFrame,一个JFrame可以放多个JPanel. 2.JFrame是窗口,JPanel是面板,窗口可以有最大化最小化.标题栏.图标,而面板没有. 3.JFrame是界面组件的容器,JPanel也是容器,但是任何组件包括panel的显示都依赖于frame. 4. public class Test extends JPanel {…
今日所学: /* 2019.08.19开始学习,此为补档. */ Java异常处理 1.异常的概念:程序运行过程中发生的问题,从而引发了中断. 2.捕获和处理异常:Java中,用try ... catch ... 来捕获异常:try ... catch ... finally ①try里面写可能会有异常的代码语句,catch里面捕获,然后处理.为了调试方便,打印出栈信息,以便跟踪. ②finally:即使有return,也一定会执行了再返回. 3.①throws表示当前方法不处理异常,而是交给方…
今日所学: /* 2019.08.19开始学习,此为补档. */ 1.继承补充: ①不要仅为了获取其他类中某个功能而去继承,而是要有所属关系. ②Super关键字: a.代表父类对象的引用,且main方法里面不能有关键字. b.子类的构造方法必须调用父类的构造方法. c.super()函数只能放在构造方法的第一行. 2.重写补充: ①父类的成员变量不能重写. ②子类重写的方法的修饰符,必须大于或者等于父类的修饰符. 3.多态补充: ①指对象的多种形态. ②引用多态: a.父类的引用可以指向本类的…
今日所学: /* 2019.08.19开始学习,此为补档. */ 1.Date工具类: Date date = new Date() ; //当前时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ; sdf.format(date) ----> 时间转字符串 sdf.parse(source) ----> 字符串转时间 2.Object类:是所有类的父类. 打开类的所有信息:ctrl+o public…
今日所学: /* 2019.08.19开始学习,此为补档. */ 1.包装类:对基本数据类型进行封装,使其具有属性和方法. Integer s1 = new Integer(123) ; Integer.parseInt Integer.valueOf(String s) : String ----> Integer 2.final:修饰类不能被继承,修饰方法不能被子类覆盖,修饰变量不能被修改(常量). 3.抽象类:①不能被实例化,就是用来被继承的父类.   ②其子类可以实例化.   ③抽象方法…
今日所学: /* 2019.08.19开始学习,此为补档. */ 1.String类 实例化:①String name1 = "张三" ; ②String name2 = new String("李四") ; 2.==比较的是引用,equals比较的是具体内容. String name3 = name2 ;  //传递引用 name2 == name3 ; ----> true 3.两种实例化区别: ①直接赋值:创建的对象存放到字符串对象池里,假如存在的,就不…
今日所学: /* 2019.08.19开始学习,此为补档. */ 构造方法没有返回值(即return为空). this:实例(对象)的引用. JVM:①static方法区:存静态数据   ②栈区:引用   ③堆区:对象/对象内存地址 ----> new 类名() ; public > protected > package(default) > private 封装性 ----> 访问控制权限 以private修饰时,get/set方法可以提供接口访问private. 如:…
今日所学: /* 2019.08.19开始学习,此为补档. */ 类:一类事物的抽象体(如全人类,学生类,订单类) 对象:具体的个体(如张三,某个外卖订单) 对象具有属性和行为. 声明的属性语句一般放上面. 方法:对象的行为. 方法的重载:方法名称相同,但参数的类型或者个数不同.体现了Java的多态性. 调用静态方法:类名 . 方法 如: class Demo{ static void func () { } public static void main (String[] args) { D…
今日所学: /* 2019.08.19开始学习,此为补档. */ JDK 1.6:byte , int , short , char , enum JDK 1.7:byte , int , short , char , enum , String 数组:相同类型的容器.其 a.大小固定 b.内存连续 c.元素类型一致. 数组的下标(索引)从0开始,以array[index]表示,最大下标 = 数组长度 - 1. 即:lastIndex == array.length - 1 数组遍历:forea…
今日所学: /* 2019.08.19开始学习,此为补档. */ ①char:只能有一个字段.字符:' ' ②二进制:0000 0000 最后一位为0就不算,为1代表20. 如25为:0001 1001 24+23+20 = 16+8+1 = 25 ③final int A = 45; final声明常量.常量名一般大写. ④对齐快捷键:ctrl+shift+f ⑤static:静态 如:static void A() { } 为定义一个静态方法. 注:this只能在类中的非静态方法中使用.静态…
今日所学: /* 2019.08.19开始学习,此为补档. */ 流程控制 条件: 一重用if 二重用if ... else 三重用if ... else if ... else 多重用switch 例: System.out.println("请输入一个数字:") ; //定义一个系统输入对象 //自动导包:ctrl+shift+o //注释:ctrl+shift+/ Scanner scanner = new Scanner(System.in) ; int n = scanner…