Java基础
大数据小小罗
做一个有思想的程序设计者!
展开
-
java基础--24.多线程的应用--电影院卖票程序的实现
A.多线程应用–电影院卖票程序的实现 A:继承Thread类 B:实现Runnable接口电影院卖票程序出问题为了更符合真实的场景,加入了休眠100毫秒。 卖票过程中出现的问题:a:同一张票多次出售 CPU的一次操作必须是原子性的 b:负数票 随机性和延迟导致多线程安全问题产生的原因(也是我们以后判断一个程序是否有线程安全问题的依据)A:是否有多线程环境 有!原创 2016-12-13 16:28:27 · 2213 阅读 · 0 评论 -
java基础--19 Date类中的日期和毫秒值之间的转化
1.从Date得到一个毫秒值 getTime()2.把一个毫秒值转换为Date构造方法 setTime(long time)应用举例:import java.util.Date;public class DateDemo {/* * public long getTime():获取时间,以毫秒为单位 * public void setTime(long time):设置时间 */原创 2016-10-07 11:46:37 · 596 阅读 · 0 评论 -
java基础--18 System类常用方法
System.gc()可用于垃圾回收。当使用System.gc()回收某个对象所占用的内存之前,通过要求程序调用适当的方法来清理资源。在没有明确指定资源清理的情况下,Java提高了默认机制来清理该对象的资源,就是调用Object类的finalize()方法。 finalize()方法的作用是释放一个对象占用的内存空间时,会被JVM调用。而子类重写该方法,就可以清理对象占用的资源,该方法有没有链原创 2016-10-06 23:08:33 · 309 阅读 · 0 评论 -
java基础--17 自定义的RandomUtils类--用于产生各种随机串的工具类
package cn.math;import java.util.Random;public class RandomUtils {// 定义所有的字符组成的串 public static final String allChar = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";// 定义所有的小写原创 2016-10-06 21:38:32 · 4830 阅读 · 0 评论 -
java基础--15.java.lang.Math类--概述及举例
Math类成员变量: public static final double PI public static final double EMath类成员方法: public static int abs(int a):绝对值 public static double ceil(double a):向上取整 public static double floor原创 2016-10-06 21:26:23 · 608 阅读 · 0 评论 -
java面试题2--方法重写与重载、this和super关键字
1:方法重写和方法重载的区别?方法重载能改变返回值类型吗? 方法重写: 在子类中,出现和父类中一模一样的方法声明的现象。 方法重载: 同一个类中,出现的方法名相同,参数列表不同的现象。 方法重载能改变返回值类型,因为它和返回值类型无关。 Override:方法重写 Overload:方法重载面试题中很容易混淆这两个概念 2:this关键字和super关原创 2016-07-27 22:32:45 · 1548 阅读 · 0 评论 -
java面试题3--成员内部类的面试题
要求: 填空,让程序分别输出30,20,10 考查内容: 1.内部类和外部类没有继承关系 2.通过外部类名限定this对象 Outer.thisclass Outer{ public int num =10; class Inner{ public int num =20; public void show(){原创 2016-07-28 22:32:03 · 443 阅读 · 0 评论 -
java面试题4--匿名内部类面试题
按照要求,补齐代码要求:在控制台输出“Hello World”interface Inter { void show();}class Outer { //补齐代码::::::::::::::: public static Inter method(){ //子类对象 -- 子类匿名对象 return new Inter(){原创 2016-07-28 22:45:31 · 1526 阅读 · 0 评论 -
java面试题5--String 的==和equals()方法
看程序写结果:/* * 看程序写结果 * ==:比较引用类型时 比较地址值是否相同 * equals:只比较引用类型 比较地址值是否相同 * 而String类重写了equals()方法,比较的是内容是否相同 */public class StringDemo { public static void main(String[] args) { Str原创 2016-07-31 16:12:25 · 313 阅读 · 0 评论 -
java面试题6--String,StringBuffer,StringBuilder
1:String,StringBuffer,StringBuilder的区别? A:String是内容不可变的,而StringBuffer,StringBuilder都是内容可变的。 B:StringBuffer是同步的,数据安全,效率低;StringBuilder是不同步的,数据不安全,效率高2:StringBuffer和数组的区别? 二者都可以看出是一个容器,装其他的数据。原创 2016-07-31 17:40:17 · 608 阅读 · 0 评论 -
java面试题7--数组高级-冒泡排序
1.排序1.1 冒泡排序原理图: /* * 数组排序之冒泡排序: * 相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处 */public class ArrayDemo { public static void main(String[] args) { // 定义一个数组 int[] arr = { 24, 69, 80原创 2016-08-02 22:13:08 · 528 阅读 · 0 评论 -
java基础--22.多线程
1.多线程概述(1)多线程:一个应用程序有多条执行路径一些概念先了解一下:进程:正在执行的应用程序通过任务管理器我们就看到了进程的存在。 而通过观察,我们发现只有运行的程序才会出现进程。 进程是系统进行资源分配和调用的独立单位。 每一个进程都有它自己的内存空间和系统资源。线程:进程的执行单元,执行路径在同一个进程内又可以执行多个任务,而这每一个任务我就可以看出是一个线程。 线程:是程序的原创 2016-12-12 20:48:20 · 250 阅读 · 0 评论 -
java基础--23.线程的控制与生命周期
线程的控制(常见方法)A:休眠线程static void sleep(long millis) :在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。 public class ThreadSleep extends Thread { @Override public void run() { for (int i原创 2016-12-12 21:28:02 · 726 阅读 · 0 评论 -
java基础--26.死锁问题的出现和解决
同步弊端:效率低如果出现了同步嵌套,就容易产生死锁问题死锁问题及其代码重现死锁: 是指两个或者两个以上的线程在执行的过程中,因争夺资源产生的一种互相等待的现象 举例: 中国人、美国人吃饭案例正常情况: 中国人:筷子两支 美国人:刀和叉现在: 中国人:筷子一支,刀一把 美国人:筷子一支,叉一把产生死锁问题: 中国人拿着刀的同时等着美国人把另一只筷子给他,美国人拿着一支筷子的同时等原创 2016-12-16 15:54:25 · 558 阅读 · 0 评论 -
java面试题20--如果catch里面有return语句,finally里面的代码还会执行吗?
会 return 后代码示例:/* * java面试题20--如果catch里面有return语句,finally里面的代码还会执行吗? */public class FinallyDemo2 { public static void main(String[] args) { System.out.println(getInt()); } publi原创 2016-12-28 15:51:48 · 8330 阅读 · 8 评论 -
java面试题19--final、finally、finalize的区别
final:最终的意思,可以修饰类、变量、成员方法修饰类:该类不能被继承 修饰变量:该变量是常量 修饰方法:该方法不能被重写finally:是异常处理的一部分,常用于释放资源 一般来说,finally中的方法一定会被执行,特殊情况下:在执行到finally之前,jvm退出了,该方法不能被执行finalize是Object类的一个方法,用于垃圾回收原创 2016-12-28 12:21:45 · 889 阅读 · 0 评论 -
java基础--32.集合框架 Collection
1.集合先来讲一讲对象数组 数组可以存储基本数据类型,也可以存储引用类型。它存储 引用类型的时候,数组就叫做对象数组集合的由来:java中存储对象数据中有数组和StringBuffer,但是使用数组存储对象的缺陷是长度固定,所以不适合变化的需求,于是,java及提供了集合供我们使用1.1 集合与数组的区别:A 长度: 数组是固定长度,集合是可变长度B.内容区别 数组可以存储基本类型和引用类型,而原创 2016-12-27 22:43:51 · 592 阅读 · 0 评论 -
java基础--16.java.util.Random类--产生随机数的N种方法
产生随机数的方法:1.使用Math类自带的random方法random方法产生的是0.0-1.0之间的随机数2.使用java.util类中的Random类的nextInt(arg)/nextDouble(arg)方法产生2.1带种子的构建方式2.2不带种子的构建方式3.使用System类中的currentTimeMillis()方法返回的long值取模运算,就可以将结果限制在一个范围内了三种方原创 2016-10-06 21:35:40 · 8670 阅读 · 0 评论 -
java基础--31.多线程常见的面试题
1.多线程的实现有几种方法?A:继承Thread类,并重写run()方法 B:实现Runnable接口,并重写run()方法(扩展)C:实现Callable接口,但是得和线程池配合使用2.同步有几种方式?2种: A:同步代码块 B:同步方法3.启动一个线程是run() 还是start()?他们的区别是什么?答: 启动线程用start()方法区别: run():封装了被线程执行的代码,直接调原创 2016-12-17 21:44:13 · 446 阅读 · 0 评论 -
java基础--30.定时器--实现调度
定时器–概念简介 定时器是一个应用十分广泛的线程工具,可用于调度多个定时任务以后台线程的方式执行。在Java中,可以通过Timer和TimerTask类来实现定义调度的功能 Timer 类public Timer() 构造方法public void schedule(TimerTask task, long delay) 安排在指定延迟后执行指定的任务。public void sc原创 2016-12-17 21:43:54 · 423 阅读 · 0 评论 -
java基础--28.线程池简介以及实际应用
线程池简介 程序启动一个新线程的成本是比较高的,因为它涉及到要与操作系统进行交互。 而使用线程池可以很好的提高性能,尤其是当程序中要创建大量生存期很短的线程时,更应该考虑使用线程池。 线程池的好处:线程池里的每一个线程代码结束后,并不会死亡,而是再次回到线程池中成为空闲状态,等待下一个对象来使用。 在JDK5之前,我们必须手动实现自己的线程池,从JDK5开始,Java原创 2016-12-16 16:59:04 · 920 阅读 · 0 评论 -
java基础--29.线程池的实现方式2-结合Callable对象
创建Callable对象注意: Callable 是带泛型的接口 这里执行的泛型其实是 call() 方法的返回值类型/* * 线程求和案例:实现 1~x 之间的累加求和 */public class MyCallable implements Callable { private Integer number = new Integer(0); public MyCalla原创 2016-12-16 17:05:41 · 350 阅读 · 0 评论 -
java基础--27.了解线程组ThreadGroup
Java中使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制。默认情况下,所有的线程都属于主线程组(main)。public final ThreadGroup getThreadGroup()我们也可以给线程设置分组Thread(ThreadGroup group, Runnable target, String name) group原创 2016-12-16 16:31:32 · 571 阅读 · 0 评论 -
java基础--25.多线程的改进--Lock显式地加锁和释放锁
JDK5中Lock锁的使用虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁,为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock接口:Lock包含方法:void lock() 获取锁void unlock() 释放锁直接已知子类:ReentrantLock代码改进:使用Lock进行加锁和释放锁的操作将原来方法中的s原创 2016-12-16 14:54:02 · 426 阅读 · 0 评论 -
java面试题8--数组高级-选择排序
数组排序之选择排序: * 选择排序基本思路: 从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处package sort;public class SelectSort { public static void selectSort(int [] arr){// 外循环控制从数组第一个元素开始遍历,直到length-1(倒数第原创 2016-08-06 16:30:24 · 371 阅读 · 0 评论 -
java面试题9--数组高级-二分查找
首先明确一点: 二分查找是有条件限制的,被查找的数组要求一定是有序的 原理图:原创 2016-08-06 17:09:49 · 544 阅读 · 0 评论 -
java面试题10--String--统计大串中小串出现的次数
解题思路:代码实现:/* * 统计大串中小串出现的次数 * 举例: * 在字符串"woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun" * 结果: * java出现了5次 * * 分析: * 前提:是已经知道了大串和小串。 * * A:定义一个统原创 2016-08-12 22:30:10 · 4383 阅读 · 0 评论 -
java基础--20 自己封装一个DateUtil类
该类包含2个主要的功能: 1.实现date-string之间的转换 2.实现string-date之间的转换public class DateUtil { private DateUtil() { } /** * 作用:把日期转换成字符串 * @param d * 被转换的日期对象 * @param format原创 2016-10-08 23:18:50 · 1265 阅读 · 0 评论 -
java基础--08代码块、继承
1:如何制作帮助文档(了解) (1)写一个类 (2)加入文档注释 (3)通过javadoc工具生成即可 javadoc -d 目录 -author -version ArrayTool.java2:通过JDK提供的API学习了Math类(掌握) (1)API(Application Programming Interface) 应用程序编程接口(帮助文档) (2)如原创 2016-07-17 23:10:01 · 300 阅读 · 0 评论 -
java基础--14.如何正确地写出单例模式
单例模式算是设计模式中最容易理解,也是最容易手写代码的模式了吧。但是其中的坑却不少,所以也常作为面试题来考。 本文主要对几种单例写法的整理,并分析其优缺点。很多都是一些老生常谈的问题,但如果你不知道如何创建一个线程安全的单例,不知道什么是双检锁,那这篇文章可能会帮助到你。单例模式常用的5种写法1)懒汉式,线程不安全 当被问到要实现一个单例模式时,很多人的第一反应是写出如下的代码,包括教科书上也是转载 2016-08-20 10:38:29 · 321 阅读 · 0 评论 -
java基础--12.Scanner和String类
1:Scanner的使用(了解)(1)在JDK5以后出现的用于键盘录入数据的类。(2)构造方法: A:讲解了System.in这个东西。 它其实是标准的输入流,对应于键盘录入 B:构造方法 InputStream is = System.in;Scanner(InputStream is) C:常用的格式 Scanner sc原创 2016-07-31 17:10:02 · 274 阅读 · 0 评论 -
java基础--11 Object类
1:Object类(掌握) (1)Object是类层次结构的根类,所有的类都直接或者间接的继承自Object类。 (2)Object类的构造方法有一个,并且是无参构造 这其实就是理解当时我们说过,子类构造方法默认访问父类的构造是无参构造 (3)要掌握的方法: A: toString()原创 2016-07-31 15:53:18 · 235 阅读 · 0 评论 -
java基础--10.面向对象
1:形式参数和返回值的问题(理解) (1)形式参数: 类名:需要该类的对象 抽象类名:需要该类的子类对象 接口名:需要该接口的实现类对象 (2)返回值类型: 类名:返回的是该类的对象 抽象类名:返回的是该类的子类对象 接口名:返回的是该接口的实现类的对象 (3)链式编程 对象.方法1().方法2()…….方法n();原创 2016-07-30 14:56:22 · 226 阅读 · 0 评论 -
java基础面试题--二分查找思想的Java实现
package sort;public class BinarySearchDemo { /** * @param args */ public static void main(String[] args) { Integer [] a ={1 ,4 ,5 ,8 ,15 ,33 ,48 ,77 ,96}; int [] b ={1 ,4 ,5 ,8 ,15 ,33 ,4原创 2016-07-30 10:30:41 · 485 阅读 · 0 评论 -
java面试题---final 修饰符
Java final 修饰符知识点总结final从字面上理解含义为“最后的,最终的”。在Java中也同样表示出此种含义。final可以用来修饰变量(包括类属性、对象属性、局部变量和形参)、方法(包括类方法和对象方法)和类。1. final修饰类:final修饰类即表示此类已经是“最后的、最终的”含义。因此,用final修饰的类不能被继承,即不能拥有自己的子类。如果视图对一个已经用final修饰的类进原创 2016-07-30 15:04:04 · 1348 阅读 · 0 评论 -
java基础——抽象类与抽象方法
抽象方法:在类中没有方法体的方法,就是抽象方法。抽象类:含有抽象方法的类就叫抽象抽象类中的抽象方法必须被实现!如果一个子类没有实现父类中的抽象方法,则子类也成为了一个抽象类!抽象类中的普通方法,可以不必实现。1 用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法。例如 :abstract class Animal { //用abstrac原创 2016-06-23 08:53:59 · 289 阅读 · 0 评论 -
java基础--07成员变量和局部变量
1. 局部变量和成员变量的区别? A:在类中的位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明上 B:在内存中的位置不同 成员变量:在堆内存 局部变量:在栈内存 C:生命周期不同 成员变量:随着对象的创建而存在,随着对象的消失而消失 局部变量:随着方法的调用而存在,随着方法调用完毕而消失原创 2016-07-17 22:03:11 · 561 阅读 · 0 评论 -
java基础--13.Regex正则表达式
正则表达式的匹配规则 A:字符 x 字符x 举例:'a'表示字符a \\ 反斜线字符 \n 换行符('\u000A') \r 回车符('\u000D') B:字符类 [abc] a、b或c(简单类) [^abc] 任何字符,除了a、b或c(否定) [a-原创 2016-08-17 11:37:58 · 330 阅读 · 0 评论 -
java基础--21 Calendar日历类
Calendar类,封装了所有的日历字段值,通过统一的方法根据传入不同的日历字段可以获取值1.获取Calendar实例对象getInstance()(其实质是返回一个GregorianCalendar子类对象,是java中多态特性的典型应用) Calendar cal= Calendar.getInstance();2.获取方法:get() int java.util.Calendar原创 2016-10-23 21:28:41 · 433 阅读 · 0 评论 -
java面试题11--String--最大公共子串
问题:找出“abcwerthelloyuiodef”和“cvhellohnm”的最长公共子串 该题的关键不在于匹配,而在于匹配之前如何截短子串,提高查找效率, 思路: step1. 先区分哪个是长串,哪个是短串 step2. 用短串直接去长串中匹配,找到则返回该短串,否则进入step3 step3. 将短串长度进行削减,将削减后的短串作为新的短串,接着执行step2图示:原创 2016-08-16 18:22:22 · 446 阅读 · 0 评论