1.getString和toString区别:
toString()方法是指把对象转换成字符串。Java中任何的对象都可以调用toString方法
getString()是指取得String类型数据库用的,比如在数据库取数据
2.map集合、list集合、set集合区别
map集合特点:(k-v)
1.能够存储唯一的列的数据(唯一,不重复)
2.能够存储可以重复的数据(可重复)
3.值的顺序取决于键的顺序
4.键和值都是可以存储null元素的
map集合是无序的,key值不可重复,value值可重复
map集合是独立的接口,重要的实现类有Hashmap、Treemap、HashTable
TreeMap是有序的,Hashmap和Hashtable是无序的(Hashmap的方法不是同步的,HashTable方法是同步的)
Hashmap.put 是取数据
List集合有序可重复的集合,集合中的每个元素都有对应的索引,以便查询和修改(查询快,删除和插入慢),它是一个接口,它继承于collection,拿数据是 List.get。放数据是 list.add
list接口常用的方法:
重要的实现类:
Arraylist特点:
1.有序,有索引,可重复
2.可以存储null值,线程不安全
3.arraylist底层是基于动态数组,向数组尾部添加元素效率高。
Linkedlist是采用链表的方式来实现List接口,数据添加、删除效率高,只需改变指针指向即可
set集合:继承于Collection接口。set是一个接口,set的元素是不可以重复的,所以至多有一个null值。
set有一个重要的方法equals:判断两个元素是否相等,返回值为boolean
set集合常用的实现类由HashSet和TreeSet
3.序列化和反序列化
序列化:把Java对象转换成字节序列过程,序列化最主要的用处就是在传递和保存对象时候,保证对象的完整性和可传递性。序列化就是把队象转换有序字节流,以便在网络上传输或者保存在本地磁盘中。序列化最核心的作用就是对象状态的保存和重建。
java序列化好处:1.实现了数据的持久化,通过序列化可以将对象永久保存到硬盘上(通常存放在文件里)。2.利用序列化实现远程通信,即在网络上传输对象字节序列。
反序列化:指将字节序列恢复为Java对象过程,客户端从文件中或者网络上获得序列化的对象字节流后。根据字节流中所保存的对象状态及描述信息,通过反序列化重建对象。
本质的讲:序列化就是把实体对象状态按照一定的格式写入到有序字节流,反序列化就是从有序字节流重建对象,恢复对象状态
为什么要进行序列化和反序列化?
当两个进程进行远程通信时,可以发送各种类型的数据,包括文本、音频、图片等,而这些数据会以二进制序列的形式在网络上传送。
当两个Java进程通信时,发送方需要将Java对象转换为字节序列,而接收方需要将字节序列恢复出Java对象。
4.jvm内存可简单分为三个区:
1、堆区(heap):用于存放所有对象,是线程共享的(注:数组也属于对象)
2、栈区(stack):用于存储基本数据类型的数据和对象的引用,是线程私有的(分为:虚拟机栈和本地方法栈)
3、方法区(method):用于存放类信息、常量、静态变量、编译后的字节码等,是线程共享的(也被称为非堆,即:Node-Heap)
Java的垃圾回收器(GC)主要针对堆区(关于对象的)
小拓展:在Java中对于不再使用的内存资源,如调用完成的方法时,会创建栈帧在栈中,调用完是程序自动出栈释放。所以和栈区有关
MYSQL的join连接
表一:user
表二:classes
接下来我们使用join来连接两张表
命令:
SELECT u.id as id,u.userName as username,u.passWord as papssword,c.name as classname from user u join classes c on c.cid=u.cid where u.id=2;
查询结果:
5.知识点
1、局部变量,不像成员变量那样类加载时就会初始化赋值,所以使用局部变量时,一定要给他先赋值,也就是定义时给它数值。成员变量只声明不初始化时调用输出是s=null,而局部变量必须初始化。
2、抽象类和接口类都无法实例化,
3.Java的"一次编译,多次运行":任何平台只要装有针对该平台的Java虚拟机,字节码文件( . class)就可以在该平台上运行
4.构造方法:对象的创建就是通过构造方法来完成,其主要功能主要是完成对象的初始化。当类实例化一个对象会自动调用构造方法
5.super关键字的作用:
(1)子父类存在同名的成员(包括变量和方法)时,在子类中默认访问的是子类的成员。调用super关键字可以指定访问父类的成员
(2)创建子类对象时,默认会先调用子类的无参构造方法,可以通过super关键字指定调用fu'lei'de指定调用父类的构造方法
6.this关键字
(1)如果在一个类中存在同名的成员变量和局部变量时,在方法内部默认访问的是局部变量,this关键字指定访问成员变量
(2)在一个构造函数中可以调用另外一个构造函数初始化对象;
7.由static修饰的方法,直接可以类名.方法名 调用