Java
Java学习记录
cczu_chan
如无必要 勿增实体
展开
-
【Java】Java中与C++复制构造函数被调用对应的情况
C++中复制构造函数被调用的三种情况◊ 定义一个对象时,以本类另一个对象作为初始值,发生复制构造;(Java中是将已有对象的地址传给新的对象)◊ 如果函数的形参是类的对象,调用函数时,将使用实参对象初始化形参对象,发生复制构造;(Java中是将实参对象的地址传给形参)◊ 如果函数的返回值是类的对象,函数执行完成返回主调函数时,将使用return语句中的对象初始化一个临时无名对象,传递给主调函...原创 2019-05-21 14:12:42 · 195 阅读 · 0 评论 -
【Java】超严谨论证:为什么自定义类对象存储到Set集合中,要重写hashCode方法和equals方法
前言首先看一下Set集合在存储元素的时候,判断元素是否重复的方法:add方法首先调用元素的hashCode方法获取该元素的哈希值,再判断Set集合中有没有元素的哈希值与之重复。如果没有,就会把新的元素存储到数组中。如果有重复的哈希值(哈希冲突),再调用元素的equals方法和Set中已有的哈希值相同的元素进行比较:如果equals方法返回true,认定两个元素相同,就不会把新元素存储到集...原创 2019-08-21 22:09:38 · 1015 阅读 · 2 评论 -
【Java】哈希值相同的变量/对象的地址值也相同吗?
前言 “Java中直接打印对象,输出的是对象的地址值(对象的类没有重写toString方法)”,这是初学者在学Java基础语言的时候,大多数教程都是这么介绍的,初学者也会认为这就是对象在内存中存储的位置,如输出的地址值为:cn.imcyc.person.Person@11ff03但是,其实这种说法是有混淆性的,实际上,打印对象输出的“地址值”并不是对象的物理存储地址,@之后的“11ff0...原创 2019-08-21 19:49:44 · 6419 阅读 · 2 评论 -
【JDBC练习】使用用户名和密码登录
前言需求: 1. 通过键盘录入用户名和密码 2. 判断用户是否登录成功分析: 使用sql语句:select * from user where username = " " and password = " ",如果这个sql有查询结果,则成功;反之,则失败。步骤首先创建数据库表user,添加两个用户名及密码作为已注册用户。CREATE TABLE USER( i...原创 2019-08-15 21:47:02 · 9328 阅读 · 1 评论 -
【JDBC练习】查看表的方法——表的数据封装成对象并装载成集合
前言 在MYSQL的db3数据库中存在表emp,通过可视化软件SQLyog可以方便的查看表的数据,如下图所示。那么如何通过JDBC来查看表?教程步骤首先新建一个Emp类,把emp表的列名当成Emp类的私有数据成员,Emp类的代码如下:package cn.imcyc.domain;import java.util.Date;/** * 封装Emp表数据的JavaBean...原创 2019-08-14 17:25:39 · 789 阅读 · 0 评论 -
【Java】框架的基本原理下篇:简单的框架测试(使用注解而不是自定义注解)
案例:简单的框架测试 准备一个Calculator类,一个注解,一个测试类。 Check注解的代码为:package top.imcyc.day07.annotation.demo;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.anno...原创 2019-07-02 15:29:29 · 226 阅读 · 0 评论 -
【Java1.8】实现类、匿名类、内部类、匿名内部类、Lambda表达式以及优化Lambda表达式比较
梳理一下实现类、匿名类、内部类、匿名内部类、Lambda表达式以及优化Lambda表达式的关系,仅针对初学者。 自定义一个接口MyFunctionInterface,其中有且仅有一个抽象方法(接口中可以有其他非抽象方法内容),代码实现为:/* 函数式接口:有且只有一个抽象方法的接口,称之为函数式接口; 当然接口中可以包含其他的方法(默认,静态,私有)。 */publi...原创 2019-06-23 22:25:58 · 1107 阅读 · 0 评论 -
【Java】框架的基本原理中篇:注解优化
在上一篇bolg中,笔者介绍了框架的灵魂:反射机制。使用反射机制,在不改动代码的前提下,只需要改动配置文件中的类名、方法名,就可以创建任意类的对象,可以执行任意方法,这就是框架内部的基本原理。本篇将介绍如何使用注解,将上篇中的配置文件省略并简化代码,达到相同的功能。 首先,我们新建一个Person类,内容与上篇中相同;新建一个注解接口;新建一个测试类。 Person类中的代码为:p...原创 2019-07-01 23:24:12 · 334 阅读 · 0 评论 -
【Java】使用文件字节输入/输出流复制文件、使用字节缓冲输入/输出流复制文件的区别
首先我们来对比一下文件字节输入流和字节缓冲输入流的read方法,可以看到两者的read方法的都继承自InputStream类,且read(bytes[ ] b)方法都没有被子类重写,所以代码执行的效率理论上没有区别。 再来对比文件字节输出流和字节缓冲输出流的write方法,可以看到有所不同: 文件字节输出流的write(bytes[ ] b)是将字节数组中的数据直接写入到此文件输出流...原创 2019-06-18 17:09:10 · 1618 阅读 · 1 评论 -
【Java】框架的基本原理上篇:反射机制
反射:框架设计的灵魂框架:半成品软件。可以在框架的基础上进行软件开发,简化编码;反射:将类的各个组成部分封装为其他对象,这就是反射机制。好处:可以在程序运行过程中,操作这些对象;可以解耦,提高程序的可扩展性。 这里使用一个简单的案例,介绍一下框架的基本原理。准备工作:新建一个Person类、新建一个pro.properties的配置文件、新建一个测试类。 Person类中写...原创 2019-07-01 15:58:22 · 577 阅读 · 0 评论 -
【Java】练习:使用Predicate接口对String数组元素信息进行筛选的两种方式
题目 数组当中有多条“姓名+性别”的信息如下,请通过Predicate 接口的拼装将符合要求的字符串筛选到集合ArrayList(或List)中,需要同时满足两个条件: 1.必须为女生; 2.姓名为4个字。String[] array = {"迪丽热巴,女", "古力娜扎,女", "马尔扎哈,男", "赵丽颖,女"}; 博主自行解答:import java.util.Arra...原创 2019-06-25 17:31:01 · 1618 阅读 · 0 评论 -
【Java】指定编码表的两种方式——String类的构造方法和转换流
使用文件字符输入流+String类构造函数指定编码表import java.io.FileInputStream;import java.io.IOException;import java.util.Arrays;public class Demo05 { public static void main(String[] args) throws IOException {...原创 2019-06-19 16:34:11 · 1040 阅读 · 0 评论 -
【JDBC】使用/不使用数据库连接池获取连接对比
不使用数据库连接池不使用工具类获取连接(以及注册驱动)://注册驱动Class.forName("com.mysql.jdbc.Driver");//把要注册的驱动加载进内存//获取数据库连接对象Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3", "root", "4719")...原创 2019-08-17 19:32:42 · 2090 阅读 · 0 评论