
Java
永恒之歌
一壶相思酒,醉卧忆佳人
展开
-
不同编码方式中英文所占的字节数
编码方式英文中文GB231212GBK12GB1803012ISO-8859-111UTF-813UTF-1644原创 2021-02-02 22:54:27 · 454 阅读 · 0 评论 -
Oracle官网jdk存档
https://www.oracle.com/java/technologies/oracle-java-archive-downloads.html原创 2021-01-12 15:49:41 · 273 阅读 · 0 评论 -
抽象类和接口
抽想类:用abstract关键字声明的类。具有相同特征和行为的对象可以抽象为一个类,而具有相同特征和行为的类可以抽象为一个抽象类;规则:抽象类可以没有抽象方法,有抽象方法的类必须是抽象类,也就是说具体的类不能有抽象方法;具体类继承抽象类必须实现所有的抽象方法;抽象类可以继承抽象类,可以不实现父类的抽象方法;抽象类可以有方法实现和属性;抽象类不能实例化对象,但可以有构造方法,就是说执行构造方法不一定是实例化一个对象,可以只是初始化数据;抽象类不能被final修饰,final修饰的类不可以继承原创 2020-07-28 23:04:01 · 403 阅读 · 0 评论 -
final关键字
声明一个常量,名称通常全部大写,小写也没问题(不建议);在定义的时候初始化或在构造方法中赋值;常量通常和对象没有关系,所以大部分情况下也同时用static修饰;常量类(工具类):实际项目中常用于定义一些公共的、不变的数据;声明一个方法,只能被子类继承,不能被重写;声明一个类,该类无法被继承;在方法参数中使用final,则在该方法内部不能修改该变量的值(内部类);...原创 2020-07-28 22:40:50 · 95 阅读 · 0 评论 -
方法重写
Java中子类继承父类中的方法,如果想进行一定的扩展,就需要重写方法。特性:发生在子父类中,方法重写的两个方法返回值、方法名和参数列表必须完全一致;子类抛出的异常不能超过父类相应方法抛出的异常;子类方法的访问级别不能低于父类方法的访问级别;父类中的方法若使用private、static、final修饰,则不能被子类重写;...原创 2020-07-26 16:01:00 · 89 阅读 · 0 评论 -
单例设计模式
单例设计模式:保证一个类仅有一个实例,并提供一个全局访问点。特点:构造方法私有化;声明一个本类对象;给外部提供一个静态方法获取对象实例;一、实现方式:1、饿汉式:在类被加载后,对象被创建,到程序结束后释放;//恶汉式:占用内存时间长,效率高class Singleton1{ private Singleton1(){} private static Singleton1 s = new Singleton1(); public static Singleton1 getInstan原创 2020-07-20 23:19:53 · 121 阅读 · 0 评论 -
代码块
普通代码块,在方法中写大的代码块,可以改变变量的作用域;构造块,在类中定义的代码块,在创建对象时被调用,先于构造方法执行;静态代码块,在类中使用static生命的代码块;在第一次创建对象的时候执行一次,通常用来初始化只调用一次的数据;...原创 2020-07-19 23:27:20 · 92 阅读 · 0 评论 -
Java内存结构
原创 2020-07-19 23:07:10 · 102 阅读 · 0 评论 -
static关键字
静态方法区:存储静态变量和类信息(方法);静态变量不依赖对象,防止发生疑义,建议直接使用类名调用;静态变量可以看作是全局变量,从类加载到程序结束会一直占用内存;静态方法不能访问非静态的属性和方法;...原创 2020-07-19 22:34:53 · 118 阅读 · 0 评论 -
构造方法
构造方法名称与类名相同,没有返回值声明(包括void);构造方法用于初始化数据;每个类都会有一个默认的无参构造方法,但是如果显示定义了构造方法,默认的将无效;若想保留默认的构造方法,必须要显示定义;构造方法可以有多个,可以重载;在一个构造方法中定义另一个构造方法,使用this(…), 且必须在第一句;不要相互调,嘿嘿;保留默认的构造方法是一个好习惯(为了方便一些框架使用反射创建对象);构造方法私有化。...原创 2020-07-16 23:44:00 · 99 阅读 · 0 评论 -
三大特性
优点:模块化;信息隐藏;代码重用;插件化易于调试;具有安全性;缺点:影响执行效率原创 2020-07-15 22:08:58 · 115 阅读 · 0 评论 -
Arrays工具类
int[] scores = {1,7,13,26,36,47,55,78,99}; Arrays.binarySearch(scores, 36);//二分法查找 Arrays.toString(scores);//数组转化为字符串输出 Arrays.sort(scores);//快速排序 /** * 数组复制 * 效率:System.arraycopy > Arrays.copyOf > for */ int[] ...原创 2020-07-13 23:26:31 · 100 阅读 · 0 评论 -
if和switch
把匹配率高的放在前面可以提高效率;差异:if语句表达式类型是boolean类型,switch分支表达式类型是byte,short,char,int,枚举,String类型;if的变量值可以是某个区间内,switch只能是一个定值;Java7switch支持String的实现原理:这个新特性是再编译器这个层次上实现的;再编译的过程中,编译器会根据源代码的含义进行转换,不同的java编译器可能采用不同的方式来转换;比如:如果switch语句中只包含了一个case语句,就可以简单地将其转换成原创 2020-07-11 21:48:14 · 718 阅读 · 0 评论 -
中英文全角半角括号转换
中文的全角半角以及英文的全角括号都是相同的,但是都和英文半角括号不相同,这个要注意一下。下面是通过维护两个字符数据完成字符替换 String s = "()"; String[] enSymbol = {"\\(","\\)"}; String[] cnSymbol = {"\\(","\\)"}; for (int i = 0; i < enSymbol.length; i++) { s = s.replaceAll(enSymbol[i], cnSymbol[i]); } Syst原创 2020-07-09 22:59:18 · 2600 阅读 · 0 评论 -
不通过第三个变量交换两个变量值的几种方法
一、通过位移运算异或int a = 10;int b = 20;a = a ^ b;b = a ^ b;a = a ^ b;System.out.println("a=" + a + " b=" + b);二、通过表达式int a = 10;int b = 20;a = a + b - (b = a);System.out.println("a=" + a + " b=" + b);三、通过加减运算int a = 10;int b = 20;a = a + b;b = a原创 2020-06-27 23:27:12 · 382 阅读 · 0 评论 -
Java-位运算
一、位运算符按位取反~;按位与&;按位或|;按位异或^;二、位移运算符左移:a<<b,将二进制形式的a逐位左移b位,最低位空出的b位补0;带符号右移:a>>b,将二进制形式的a逐位右移b位,最高位空出的b位补原来的最高符号位;无符号右移:a>>>b,将二进制形式的a逐位右移b位,最高位空出的b位补0;三、要点位移运算时最快的,如果乘数或除数是2的次幂的话,可以考虑用位移运算...原创 2020-06-27 23:08:18 · 129 阅读 · 0 评论 -
Java-取整函数
一、取整函数Math.ceil(double x):向上取整,并以double类型返回;Math.floor(double x):向下取整,并以double类型返回;Math.rint(double x):取距离x最近的整数,若相等则返回偶数,以double类型返回;Math.rount(x):若x为float类型,返回(int)Math.floor(x+0.5);若x为double类型,返回(long)Math.floor(x+0.5);...原创 2020-06-09 23:00:42 · 266 阅读 · 0 评论 -
jdk环境变量配置
系统变量→新建 JAVA_HOME 变量 。变量值填写jdk的安装目录C:\Program Files\Java\jdk1.8.0_31\系统变量→新建 CLASSPATH 变量变量值填写 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一点)系统变量→寻找 Path 变量→编辑在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代.原创 2020-06-02 23:39:11 · 319 阅读 · 0 评论 -
Java正则表达式group()
import java.util.regex.Matcher;import java.util.regex.Pattern;/** * group()返回由以前匹配操作所匹配的输入子序列 * group(int group)返回在以前匹配操作期间由给定组捕获的输入子序列 * */public class RegexDemo { public static void main(String[] args) { String string = "12aa34 34bb45 55c66";原创 2020-06-02 23:25:35 · 317 阅读 · 0 评论 -
Java-字节输入输出流
import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;/** * 字节输入输出流 * 输出流:超类OutputStream,对文件的输出流使用原创 2020-06-01 23:53:15 · 103 阅读 · 0 评论 -
Java-读文件
import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStreamReader;public class FileReaderDemo { private static void readFile() { File原创 2020-06-01 23:13:01 · 109 阅读 · 0 评论 -
Java-File类
import java.io.File;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;/* * File类的使用 */public class FileDemo { public static void main(String[] args) { //File表示一个文件或目录 //E:\\JavaTest\\Fi原创 2020-05-29 23:51:28 · 116 阅读 · 0 评论 -
Java——Map
一、概述图(Map)是一种按照键值存储元素的容器,键值类似下标,可以是任何类型的对象。键值与值一一对应,不能重复,真正存储的是元素值。二、继承关系...原创 2020-03-31 22:23:45 · 150 阅读 · 0 评论 -
Java获取日期时间及其格式处理
对于Java处理日期时间有两个类,Date和Calendar,在java8 API文档中,Date大部分方法已被弃用,改为用Calendar类实现。 一、DateFormat类 先写一下DateFormat类,直接上代码直观(忽略不规范命名,给你一个眼神自己体会)。public class TestDate { public static void main(Stri...原创 2019-08-18 17:47:47 · 2751 阅读 · 0 评论 -
Java——方法重载
子类从父类中继承方法。有时,子类需要修改父类中定义的方法的实现,这称作方法的重写。 但要注意一下几点:仅当实例方法可以访问时,它才能被覆盖。私有方法在它的类本身以外是不能被访问的,所以它不能被覆盖。子类的定义的方法如果在父类中是私有的,那这两个方法没有任何关系。静态方法能被继承,但不能被覆盖。如果父类中定义的静态方法在子类中被重新定义,那么在父类中定义的静态方法将被隐藏(指子类写了一个和父类相原创 2017-02-03 16:09:12 · 277 阅读 · 0 评论 -
Java——包装类
一、包装类 出于对性能的考虑,在Java中基本数据类型不作为对象使用,因为处理对象需要额外的系统开销。但是Java中的许多方法需要将对象作为参数,所以有时需要将基本数据类型并入对象或包装成对象。通过包装类,可以将基本数据类型值作为对象处理。 Java为基本数据类型提供了Boolean、Character、Byte、Short、Integer、Long、Float、Double等包装类,这些都原创 2017-02-02 15:19:33 · 352 阅读 · 0 评论 -
Java——随机数(Random()函数)
Java中存在着两种Random函数:一、java.lang.Math.Random Math.random()方法生成大于等于0.0且小于1.0的double型随机数(0.0<=Math.random<1.0),返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。举一个小例子:public class Demo { public static void main(String[] a原创 2017-02-01 17:37:53 · 1460 阅读 · 0 评论 -
Java——可变长参数列表
在Java中,可以把类型相同但个数可变的参数传递给方法。可以将数目可变的参数传或一维数组传递给可变长参数。Java会将可变长参数当作数组对待,当用数目可变的参数调用方法时,Java会创建一个一维数组并把参数传给它。 方法中的参数声明如下: type… parameterName(类型名… 参数名) 注意:只能给方法指定一个可变长参数,且该参数必须是最后一个参数,其他参数必须在它之前。在原创 2017-01-27 16:31:30 · 498 阅读 · 0 评论 -
Java——直接量
直接量指的就是程序中直接出现的常量值。一、整型直接量 整型直接量默认是int型的,我都知道int型值的范围是-231~231−12^{31}~2^{31}-1即: (-21 4748 3648 ~ 21 4748 3647),而为了表示一个long型的整形变量,需要在其后加上L或l。否则,如果将一个超过int型取值范围的整型直接量(即long型但未加L或l)直接赋值给一个long型的变量,会发生错原创 2017-01-22 11:14:16 · 2460 阅读 · 1 评论 -
java——求余操作%
操作符%通常用在正整数上,但同样可以用在负整数和浮点数上。 注意:只有当被除数是负数时, 余数才是负的。原创 2017-01-21 20:13:31 · 680 阅读 · 0 评论 -
Java——基本数值类型
类型名 范围 存储大小 byte -27~27−12^7~2^7-1即: (-128 ~ 127) 8位带符号数 short -215~215−12^{15}~2^{15}-1即:(-3 2768 ~ 3 2767) 16位带符号数 int -231~231−12^{31}~2^{31}-1即: (-21 4748 3648 ~ 21 4748 3647)原创 2017-01-21 17:59:39 · 375 阅读 · 0 评论 -
Java——命名
一、标识符标识符是由字母、数字、下划线(_)和美元符号($)构成的字符序列。标识符必须以字母、下划线(_)或美元符号($)开头,不能以数字开头。标识符不能是保留字,不能是true、false或null。标识符可以是任意长度。注意: 1、一般采用具有描述性的标识符可以提高程序的可读性。 2、Java区分大小写,大小写不同会被认为是不同的标识符。 3、一般不要用字符$命名标识原创 2017-01-21 16:43:08 · 351 阅读 · 0 评论 -
Java——System.out.println()
对于Java中System.out.println()方法,大家一定都很熟悉,我在此简单介绍一下其在多线程中的问题。 先举一个简单的例子;public class Test { public static void main(String[] args) { MyThread myThread = new MyThread(); Thread aThre原创 2017-02-08 11:50:36 · 574 阅读 · 0 评论 -
Java——数组复制
我们在写程序的过程中经常需要复制一个数组或数组的一部分,对于新手可能会直接将一个数组变量复制给另一个数组变量(list1 = list2 ),但这样只是将引用值赋值给了另一个数组变量,使两个变量都指向相同的内存地址,并不是真正意义上的复制。数组的复制有三种方法:使用循环语句逐个地复制数组的元素; 使用System类中的静态方法arraycopy;使用clone方法复制数组。对于使用循环语句,原创 2017-01-27 15:40:40 · 431 阅读 · 0 评论