Java
Yes_JiangShuai
默默奋斗的攻城狮 向往掌握技术而不限于技术
展开
-
java实现大段中文转拼音首字母、拼音全拼
【代码】java实现大段中文转拼音首字母、拼音全拼。原创 2023-03-16 19:57:36 · 6396 阅读 · 0 评论 -
输入汉字,打印汉字图形(java实现)
好久没写代码,最近写了一个小demo,可以实现读取输入流中的汉字,用指定的字符打印汉字的图形的功能,欢迎大家批评指正。原创 2022-06-01 09:27:55 · 1397 阅读 · 0 评论 -
16 个超级实用的 Java 工具类
一、前言在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类。以下工具类、方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码。二、org.apache.commons.io.IOUtilsjavacloseQuietly:关闭一个IO流、socket、或者selector且不抛出异常,通常放在finally块toString:转换IO流、 Uri、 byte[]为Stringcopy:IO流数据复制,从输入流写到输出转载 2020-09-08 09:48:53 · 282 阅读 · 0 评论 -
Class.forName()详解
在Java语言中,任何类只有被装载到JVM上才能运行。Class.forName()方法的作用就是把类加载到JVM中,它会返回一个与带有给定字符串名的类或接口相关联的Class对象,并且JVM会加载这个类,同时JVM会执行该类的静态代码段。在使用JDBC连接数据库之前,一般都会调用:Class.forName("com.mysql.jdbc.Driver")方法来加载JDBC驱动,那么为什原创 2020-04-14 08:57:59 · 5653 阅读 · 0 评论 -
使用Java网络编程创建基于UDP协议的Server和Client
package com.ch10_network;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;public class UDPClientA { public static void原创 2017-08-11 21:32:26 · 532 阅读 · 0 评论 -
Java对象池原理分析
大家都知道,对于java中的String类型,运行下面两条语句,都能创建一个abc字符串对象。String str1 = "abc";String str2 = new String("abc");但二者的原理却不同,上面一个语句是到字符串常量池中去取abc字符串,如果存在,直接返回引用,而如果不存在,则新建一个abc字符串,然后返回引用。而第二个语句不去检查该字符串是否已经存在于常量原创 2017-07-14 15:27:40 · 932 阅读 · 0 评论 -
Java使用BigDecimal进行精确计算
其实java的float只能用来进行科学计算或工程计算,在大多数的商业计算中,一般采用java.math.BigDecimal类来进行精确计算。 在使用BigDecimal类来进行计算的时候,主要分为以下步骤: 1、用float或者double变量构建BigDecimal对象。 2、通过调用BigDecim原创 2017-07-14 11:01:48 · 571 阅读 · 0 评论 -
Java内部类的简单记忆
内部类是Java的类的一种形式,它的使用方法比较奇怪,让一些开发人员无法正确的理解它。这里提供一个简单的Demo,帮助大家理解。public class InnerClassDemo{ //静态内部类,不能访问静态成员变量和方法 //在外部类加载的时候,静态内部类也随之加载 //相对于外部类来说,几乎是独立的,可以在不依赖外部类对象的条件下单独创建一个内部类对象 static clas原创 2017-07-13 21:15:23 · 359 阅读 · 0 评论 -
Java子类和父类构造器问题分析
在Java中,如果子类中出现了无参构造器(不管是你手动编写的,还是系统自动生成的)时,父类中必须提供一个无参的构造器,但是如果你在子类的无参构造器中调用父类的带参构造器,则父类无须提供一个默认的无参构造器。示例如下:1、子类中出现无参构造器,子类中super()可以省略,编译器默认自动添加super()到子类的构造器第一行:package com.js.demo01;public cl原创 2017-07-13 10:02:27 · 612 阅读 · 0 评论 -
Java多线程-停止线程
停止线程是在多线程开发时很重要的技术点,掌握此技术可以对线程的停止进行有效的处理。停止线程在Java语言中不像break那么干脆,需要一些技巧性的处理。使用Java内置支持多线程的类设计多线程应用是很常见的事情,然而,多线程给开发人员带来了一些新的挑战,如果处理不好就会导致超出预期的行为并且难以定位错误。停止一个线程意味着在线程处理完任务之前停掉正在做的操作,也就是放弃当前的操作。虽然这看起来很简原创 2017-06-02 17:16:56 · 588 阅读 · 0 评论 -
编译时类型和运行时类型
Java中的许多对象(一般都是具有父子类关系的父类对象)在运行时都会出现两种类型:编译时类型和运行时类型,例如:Person person = new Student();这行代码将会生成一个person变量,该变量的编译时类型是Person,运行时类型是Student。 说明一下编译时类型和运行时类型: Java的引用变量有两个类型,一个是编译时类型,一个是运行时类型,编译时转载 2017-06-05 15:08:48 · 946 阅读 · 0 评论 -
关于堆和栈的那些事儿
关于堆和栈的那些事2014-09-14 分类:算法设计、编程开发、首页精华2人评论 来源:独酌逸醉分享到:更多7欢迎分享开发问题到码农社区!将问题帖子私信@程序员俱乐部,将有近60000人为您解答!问题描述编程语言书籍中经常解释值类型被创建在栈上,引用类型被创建在堆上,但是并没有本质上解释这堆和栈是什么。我仅有高级语言编程经验,没有看过对此更清晰的解释。我的意思是转载 2017-04-16 12:37:09 · 889 阅读 · 0 评论 -
使用Java反射机制创建对象
package com.ch09_reflection;import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;/** * 通常来说,开发者使用一个new关键字就可以实例化一个类,也就是创建一个对象。那么使用反射机制能否创建一个对象呢? * 答案是肯定的,这样的功能原创 2017-08-11 21:26:41 · 3312 阅读 · 0 评论 -
使用Java反射机制覆盖toString()方法
package com.ch09_reflection;import java.lang.reflect.Field;/** * 用于保存数据的类,往往会具有很多属性(或称为成员变量),而且这些变量可能会发生一些变化, * 例如改变名称、新增属性、去掉属性等。如果在toString()方法中,把这些属性用硬代码(将一些可变的数据直接写在代码中,就叫硬代码) * 的方式进行字符串相加,原创 2017-08-11 21:27:38 · 1681 阅读 · 0 评论 -
使用Java反射机制访问类的私有属性
package com.ch09_reflection;/** * 通过反射来访问类的私有属性 */import java.lang.reflect.Field;class PrivateTestClass{ //私有属性 private String field1; //构造方法 public PrivateTestClass(String field1) { super原创 2017-08-11 21:28:43 · 3174 阅读 · 0 评论 -
使用Java网络编程创建基于TCP协议的Server和Client
package com.ch10_network;import java.io.OutputStream;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;import java.util.Date;public class TCPServerA { public stat原创 2017-08-11 21:30:56 · 740 阅读 · 0 评论 -
使用Java多线程优化基于TCP协议的Server
package com.ch10_network;import java.io.IOException;import java.io.OutputStream;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;import java.util.Date;/** * 给服务原创 2017-08-11 21:33:58 · 1121 阅读 · 0 评论 -
Java实现一个简单的Web服务器
package com.ch10_network;import java.io.IOException;import java.io.OutputStream;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;/** * 一个简单的Web服务器 * 浏览器在访问一个web原创 2017-08-11 21:37:13 · 1612 阅读 · 0 评论 -
Java反射-使用Field类来操作类的成员变量(Field)
话不多说,请看代码。package com.js.demo01;/** * Field类,代表的是类的属性(字段),也称为成员变量 */import java.lang.reflect.Field;public class ManageFields { public static void main(String[] args) { FieldTestClass obj1 =原创 2017-08-06 15:44:25 · 3172 阅读 · 0 评论 -
Java 8 默认方法和多继承
以前经常谈论的Java对比c++的一个优势是Java中没有多继承的问题。 因为Java中子类只能继承(extends)单个父类, 尽管可以实现(implements)多个接口,但是接口中只有抽象方法,方法体是空的,没有具体的方法实现,不会有方法冲突的问题。这些都是久远的说法了,自从今年Java 8发布后, 接口中也可以定义方法了(default method)。 之所以打破以前的设计在接口中转载 2017-08-15 10:17:29 · 462 阅读 · 0 评论 -
JDK各个版本的新特性(1.5-1.8)
JDK各个版本的新特性 对于很多刚接触java语言的初学者来说,要了解一门语言,最好的方式就是要能从基础的版本进行了解,升级的过程,以及升级的新特性,这样才能循序渐进的学好一门语言。今天先为大家介绍一下JDK1.5版本到JDK1.7版本的特性。希望能给予帮助。JDK1.5新特性: 1.自动装箱与拆箱:自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型转载 2017-08-15 10:20:44 · 963 阅读 · 0 评论 -
集合遍历的几种方式
最近在看java集合框架部分的内容,总结一下遍历集合元素的几种方式,供参考。package com.js.general;import java.util.Collection;import java.util.HashSet;/** * Java8为Iterable接口新增了一个forEach()方法,可用于遍历集合元素 * @author jiangs * */publ原创 2017-09-01 10:56:17 · 830 阅读 · 0 评论 -
Java Socket(套接字)编程、TCP和UDP通信过程详解
网路上的两个程序通过一个双向的通信连接实现数据的交换,这个双向链路的一端被称为一个Socket。Socket也被称为套接字,可以用来实现不同虚拟机或不同计算机之间的通信。在Java语言中,Socket可以分为两种类型,面向连接的Socket通信协议(TCP,Transmission Control Protocol,传输控制协议)和面向无连接的Socket通信协议(UDP,User Datagra原创 2017-05-04 16:35:34 · 2355 阅读 · 0 评论 -
Java中堆和栈的区别(结合示例程序分析各自存储情况)
在Java语言中,堆与栈都是内存中存放数据的地方。变量分为基本数据类型和引用类型,基本数据类型的变量(例如int、short、byte、double、float、boolean以及char等)以及对象的引用变量,其内存都分配在栈上,变量出了作用域就会自动释放,而引用类型的变量,其内存分配在堆上或者常量池(例如字符串常量和基本数据类型常量)中,需要通过new等方式进行创建。具体而言,栈内原创 2017-05-04 10:50:52 · 874 阅读 · 0 评论 -
Class.forName()的作用是什么?
在Java语言中,任何类只有被装载到JVM上才能运行。Class.forName()方法的作用就是把类加载到JVM中,它会返回一个与带有给定字符串名的类或接口相关联的Class对象,并且JVM会加载这个类,同时JVM会执行该类的静态代码段。在使用JDBC连接数据库之前,一般都会调用Class.forName("com.mysql.jdbc.Driver")方法来加载JDBC驱动原创 2017-05-03 23:06:53 · 2026 阅读 · 0 评论 -
Java进阶知识
1 批处理文件(bat)简单的说,批处理的作用就是自动的连续执行多条命令 .编写bat处理文件可以使用记事本的方式:常见批处理文件的命令: echo表示显示此命令后的字符 tiltle 设置窗口的标题。echo off 表示在此语句后所有运行的命令都不显示命令行本身 color 设置窗体的字体颜色。@与echo off相象,但它原创 2017-04-08 18:47:42 · 2888 阅读 · 0 评论 -
Java线程——两种创建线程的方式
第一种方式:继承Thread类并重写run()方法来创建线程/* * 继承Thread类并重写run()方法来创建线程 * 程序启动时总是会自动的调用main()方法执行主线程,因此mian()是创建和启动线程的地方。首先创建了t1、t2、t3三个线程并传入了相应的参数 * 程序运行到t1.start();启动线程病并自动调用run()方法,在run()方法中,sleep(200)这个方原创 2017-03-12 11:12:37 · 469 阅读 · 1 评论 -
说说Java代理模式
代理实现可以分为静态代理和动态代理。静态代理静态代理模式其实很常见,比如买火车票这件小事:黄牛相当于是火车站的代理,我们可以通过黄牛买票,但只能去火车站进行改签和退票。在代码实现中相当于为一个委托对象realSubject提供一个代理对象proxy,通过proxy可以调用realSubject的部分功能,并添加一些额外的业务处理,同时可以屏蔽realSubject中未开放的接口。转载 2017-03-28 10:45:28 · 432 阅读 · 0 评论 -
JavaBean、POJO、DAO、DTO小考
名字很玄乎,其实就是常用的实体层,用来封装对象的属性,提供访问接口,增强隐私性。原创 2016-08-27 10:43:02 · 1116 阅读 · 0 评论 -
Java对象的创建
Java对象的创建java是一门面向对象的编程语言,在java程序运行中无时无刻都有对象被创建出来。在语言层面上,创建对象(例如克隆、反序列化)通常仅仅是一个new关键字而已,而在虚拟机中,对象(此处特指普通的java对象)的创建又是怎样一个过程呢?虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用,并且检查这个符号引用代表的原创 2016-11-22 15:47:58 · 607 阅读 · 0 评论 -
Java内存区域与内存溢出异常(一)
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外的人想进去,墙内的人却想出来。 ——《深入理解Java虚原创 2016-11-21 20:45:57 · 647 阅读 · 0 评论 -
自学java基础笔记
java基础教程基础字符public 公共的class 类static 静态的void 无返回类型main 主要的String 字符串args 参数System 系统的out 输出设备print 打印println 打印并换行\t 输出八个空格 相当于制表位\n 换行//注释符 后面跟注释 计算机不执行/*多行注释 中间原创 2016-11-15 09:14:41 · 1438 阅读 · 0 评论 -
Java13种核心技术
J2EE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对J2EE中的13种技术规范进行简单的描述(限于篇幅,这里只能进行简单的描述):J2EE中的13种核心技术规范:JDBC, JNDI, EJBs, RMI, JSP, Java servlets, XML, JMS, Java IDL, JTS, JTA,原创 2016-11-15 09:18:39 · 1062 阅读 · 0 评论 -
Java简化正则表达式的使用(抽取工具类)
使用:RegexString.with(string).pattern(pattern).start() + 后续操作(matches,find或者是replace)抽取如下工具类:package com.js;import java.util.Objects;import java.util.regex.Matcher;import java.util.regex.Pattern原创 2017-04-29 10:42:36 · 1043 阅读 · 0 评论 -
线程池的一点知识(附示例代码)
线程池:解决了多生产多消费的效率问题使用了JDK1.5 java.util.concurrent.locks包中的对象。Lock接口:它的出现比synchronized有更多的操作。lock():获取锁。unlock():释放锁。同步代码块或者同步函数的锁操作是隐式的。JDK1.5 Lock接口,按照面向对象的思想,将锁单独封装成了一个对象。并提供了对锁的显示操原创 2017-04-29 10:46:40 · 700 阅读 · 0 评论 -
Java中IO流操作文件总结
IO流操作文件总结拷贝文件package com.cloud.day1;import Java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class Demo1 { public static void原创 2017-04-29 12:01:47 · 725 阅读 · 0 评论 -
JVM加载class文件的原理机制是什么?类加载器的工作原理
Java语言是一种具有动态性的解释型语言,类(class)只有被加载到JVM中后才能运行。当运行指定程序时,JVM会将编译生成的.class文件按照需求和一定的规则加载到内存中,并组织成为一个完整的Java应用程序。这个加载过程是由类加载器来完成的,具体来说,就是由ClassLoader和它的子类来实现的。类加载器本身也是一个类,其实质是把类文件从硬盘读取到内存中。类的加载方式分为隐式原创 2017-05-02 17:12:01 · 11177 阅读 · 0 评论 -
"=="、equals和hashCode有什么区别
1)“==”运算符用来比较两个变量的值是否相等。也就是说,该运算符用于比较变量对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能使用“==”运算符。具体而言,如果两个变量是基本数据类型,可以直接使用“==”运算符来比较其对应的值是否相等。如果一个变量指向的数据是对象(引用类型),那么,此时涉及了两块内存,对象本身占用了一块内存(堆内存),变量也占用一块内存,原创 2017-04-30 19:29:10 · 12358 阅读 · 0 评论 -
finally块中的代码什么时候被执行?finally是不是一定会被执行?(见最后引申)
问题描述:try{}里有一个return语句,那么紧跟在这个try{}后面的finally{}中的代码是否会被执行?如果会的话,什么时候被执行,在return之前还是return之后?在Java语言的异常处理中,finally块的作用就是为了保证无论出现什么情况,finally块里的代码一定会被执行。由于程序执行return就意味着结束对当前函数的调用并跳出这个函数体,因此任何语句要执原创 2017-05-02 10:30:23 · 40613 阅读 · 15 评论 -
Java实现ArrayList去重复值
方法一:循环元素删除 // 删除ArrayList中重复元素public static void removeDuplicate(List list) { for ( int i = 0 ; i < list.size() - 1 ; i ++ ) { for ( int j = list.size() - 1 ; j >原创 2017-05-01 11:03:31 · 2161 阅读 · 0 评论