Java
diweikang
心如止水
展开
-
SimpleDateFormat线程不安全
想必大家对SimpleDateFormat并不陌生。SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调试的问题,因为 DateFormat 和 SimpleDateFormat 类不都是线程安全的,在多线程环境下调用 format() 和 parse() 方法会出现问题。下面我们通过一个具体的场景来一...原创 2019-07-06 14:04:11 · 455 阅读 · 0 评论 -
静态代码块,构造代码块和构造函数的执行顺序
静态代码块:最早执行,类被载入内存时执行,只执行一次。没有名字、参数和返回值,有关键字static。构造代码块:执行时间比静态代码块晚,比构造函数早,和构造函数一样,只在对象初始化的时候运行。没有名字、参数和返回值。构造函数:执行时间比构造代码块时间晚,也是在对象初始化的时候运行。没有返回值,构造函数名称和类名一致。注意:静态代码块在类加载的时候就执行,所以的它优先级高于main()方法。...原创 2019-07-03 21:30:16 · 4378 阅读 · 0 评论 -
String、StringBuilder、StringBuffer对比
这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。类名 String StringBuffer StringBuilder 线程安全 安全(final修饰) 安全 不安全 字符串类型 常量 变量 变量 执行效率 最慢 介于二者之间 最快 1.线程安全String类是用final修饰符修饰...原创 2019-06-27 20:59:51 · 185 阅读 · 0 评论 -
String是值传递还是引用传递
今天上班时,同事发现了一个比较有意思的问题。他把一个String类型的参数传入方法,并在方法内改变了引用的值。 然后他在方法外使用这个值,发现这个String还是之前的值,并没有改变。这里要向大家介绍一下,大家都知道java在传参时分为值 值传递和引用传递。参数为基本类型时是值传递, 参数为封装类型时是引用传递。例如:基本类型参数public class Test { ...原创 2019-07-02 20:49:24 · 759 阅读 · 1 评论 -
String字符串反转
这道题在面试的时候被问过,在此给大家分享一下。方法一、通过StringBuiler的reverse()的方法,最快的方式。public static String reverseStringBuilder(String s) { StringBuilder sb = new StringBuilder(s); String reverse = sb.reverse().t...原创 2019-06-25 22:41:15 · 21698 阅读 · 1 评论 -
String中equals()、hashCode()方法的作用与源码
String类中的equals()方法的源码如下: public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String...原创 2019-03-22 13:08:30 · 1279 阅读 · 0 评论 -
String.split()方法介绍
String.split()方法我们会经常使用到,这个方法可以将一个字符串分割成数组,但是最近在使用的时候发现一个问题,代码如下: String str1 = "1"; String[] arr1 = str1.split(","); System.out.println("arr1.length=" + arr1.length); for (String s : arr1) ...原创 2016-09-08 21:22:39 · 8337 阅读 · 0 评论 -
Java关键字--final
在程序设计中,我们有时可能希望某些数据是不能够改变的,这个时候final就有用武之地了。final是java的关键字,它所表示的是“这部分是无法修改的”。不想被改变的原因有两个:效率、设计。使用到final的有三种情况:数据、方法、类。一、 final数据有时候数据的恒定不变是很有用的,它能够减轻系统运行时的负担。对于这些恒定不变的数据我可以叫做“常量”。“常量”主要应用与以下两个地方:...原创 2016-07-28 14:29:00 · 280 阅读 · 0 评论 -
类变量和实例变量的区别
类变量也叫静态变量,也就是在变量前加了static 的变量;实例变量也叫对象变量,即没加static 的变量;区别: 类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值的改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;例:public class A{ public static int a = 0;...原创 2016-07-14 23:56:16 · 656 阅读 · 0 评论 -
java关键字--static
一、 static代表着什么在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个“伪全局”的概念,在Java中static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,当然也可以修饰代码块。Java把内存分为栈内存和堆内存,其中栈内存用来存放一些基本类型的变量、数组和对象的引用,堆内存主要存放一些对象。在JVM加载一个类的时候,若该类存在static修饰...原创 2016-07-14 23:47:56 · 346 阅读 · 0 评论 -
改良程序的11技巧
有很多理由都能说明为什么我们应该写出清晰、可读性好的程序。最重要的一点,程序你只写一次,但以后会无数次的阅读。当你第二天回头来看你的代码时,你就要开始阅读它了。当你把代码拿给其他人看时,他必须阅读你的代码。因此,在编写时多花一点时间,你会在阅读它时节省大量的时间。让我们看一些基本的编程技巧:1、尽量保持方法简短2、永远永远不要把同一个变量用于多个不同的目的3、使用自描述的变量名和...原创 2016-07-12 11:31:38 · 372 阅读 · 0 评论 -
三目运算符报空指针,JDK自动拆箱
程序中的问题最近发现了一个很诡异的NullPointerException,在下面这个方法抛出,一开始怎么都没想明白,dClass.getD()即使为null,那直接赋值给d也没问题啊。 class DClass { private Double d; public Double getD() { return d; } public void setD(Doubl...原创 2016-07-12 00:02:49 · 5238 阅读 · 3 评论 -
Java三大特性之---多态
面向对象编程有三大特性:封装、继承、多态。封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而言它的内部细节是隐藏的,暴露给外界的只是它的访问方法。继承是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承,同时继承也为实现多态做了铺垫。那么什么是多态呢?多态的实现机制又是什么?请看我一一为你揭开:所谓多态就是指程序中定义的引用变量...原创 2016-06-28 19:24:04 · 1392 阅读 · 0 评论 -
Java三大特性之---继承
在《Think in java》中有这样一句话:复用代码是Java众多引人注目的功能之一。但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情。在这句话中最引人注目的是“复用代码”,尽可能的复用代码使我们程序员一直在追求的,现在我来介绍一种复用代码的方式,也是java三大特性之一---继承。继承在讲解之前我们先看一个例子,该例子是前篇博文(Java三大...原创 2016-06-28 18:38:59 · 989 阅读 · 0 评论 -
Java三大特性之---封装
封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他对象只能通过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交互。也就是说用户是无需知道对象内部的细节(当然也无从知道),但可以通过该对象对外的提...原创 2016-06-28 17:58:11 · 360 阅读 · 0 评论 -
java内存溢出与解决方法
1、内存泄漏memoryleak:是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。2、内存溢出outofmemory:指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢出。3、二者的...原创 2019-07-23 11:18:54 · 685 阅读 · 0 评论