当前位置:文档之家› 动力节点-java常用类

动力节点-java常用类

动力节点-java常用类
动力节点-java常用类

1.纲要

a)String

b)StringBuffer

c)基础类型对应的8个包装类

d)日期相关类

e)数字相关类

f)Random

g)Enum

2.内容

1.1

2.1、String

1.1.1

2.1.1、String类是不可变类,也就是说String对象声明后,将不可修

从以上内存图,大家可以看到,String对象赋值后不能再修改,这就是不可变对象,如果对字符串修改,那么将会创建新的对象

注意:只要采用双引号赋值字符串,那么在编译期将会放到方法区中的字符串的常量池里,如果是运行时对字符串相加或相减会放到堆中(放之前会先验证方法区中是否含有相同的字符串常量,如果存在,把地址返回,如果不存在,先将字符串常量放到池中,然后再返回该对象的地址)

1.1.2

2.1.2、String s1 = “abc”和String s2 = new String(“abc”)

●如果是采用双引号引起来的字符串常量,首先会到常量池中去查找,如果存在就不再分配,

如果不存在就分配,常量池中的数据是在编译期赋值的,也就是生成class文件时就把它放到常量池里了,所以s1和s2都指向常量池中的同一个字符串“abc”

●关于s3,s3采用的是new的方式,在new的时候存在双引号,所以他会到常量区中查找

“abc”,而常量区中存在“abc”,所以常量区中将不再放置字符串,而new关键子会在堆中分配内存,所以在堆中会创建一个对象abc,s3会指向abc

●如果比较s2和s3的值必须采用equals,String已经对eqauls方法进行了覆盖

1.1.3

2.1.3、String面试题分析

以上代码创建了几个对象?

通过以上分析,大家会看到创建了5个对象,堆区中2个,常量池中1一个,栈区2个

通过以上分析,使用String时,不建议使用new关键字,因为使用new会创建两个对象

记住:堆区中是运行期分配的,常量池中是编译器分配的

1.1.4

2.1.4、String常用方法简介

1.endsWith:判断字符串是否以指定的后缀结束

2.startsWith,判断字符串是否以指定的前缀开始

3.equals,字符串相等比较,不忽略大小写

4.equalsIgnoreCase,字符串相等比较,忽略大小写

5.indexOf,取得指定字符在字符串的位置

https://www.doczj.com/doc/cd7203393.html,stIndexOf,返回最后一次字符串出现的位置

7.length,取得字符串的长度

8.replaceAll,替换字符串中指定的内容

9.split,根据指定的表达式拆分字符串

10.substring,截子串

11.trim,去前尾空格

12.valueOf,将其他类型转换成字符串

1.1.5

2.1.5、使用String时的注意事项

因为String是不可变对象,如果多个字符串进行拼接,将会形成多个对象,这样可能会造成内存溢出,会给垃圾回收带来工作量,如下面的应用最好不要用String

【代码示例】

1.1.6

2.1.5、正则表达式初步

正则表达式,主要可以用来做字符串处理,可以描述特定的字符模式,如:”a{2}”表示由两个字符“a”构成的字符串,等同于普通字符串“aa”,如”\d”代表任意一个数字0~9

public boolean matches(String regex),返回此字符串是否匹配给定的正则表达式。

public String replaceAll(String regex, String replacement)使用给定的replacement 字符串替换此字符串匹配给定的正则表达式的每个子字符串。

1.2

2.2、StringBuffer和StringBuilder

1.2.12.2.1、StringBuffer

StringBuffer称为字符串缓冲区,它的工作原理是:预先申请一块内存,存放字符序列,如果字符序列满了,会重新改变缓存区的大小,以容纳更多的字符序列。StringBuffer是可变对象,这个是String最大的不同

1.2.22.2.2、StringBuilder

用法同StringBuffer,StringBuilder和StringBuffer的区别是StringBuffer中所有的方法都是同步的,是线程安全的,但速度慢,StringBuilder的速度快,但不是线程安全的

1.3

2.3、基本类型对应的包装类

1.3.1

2.

3.1、包装类概述

基本类型的包装类主要提供了更多的实用操作,这样更容易处理基本类型。所有的包装类都是final的,所以不能创建其子类,包装类都是不可变对象

1.3.2

2.

3.2、类层次结构

除了boolean和Character外,其它的包装类都有valueOf()和parse XXX方法,并且还具有byteVaue(),shortVaue(),intValue(),longValue(),floatValue()和doubleValue()方法,这些方法是最常用的方法

1.3.3

2.

3.4、JDK5.0的新特性

在JDK5.0以前,包装类和基本类型做运算时,必须将包装类转换成基本类型才可以,而JDK5.0提供Auto-boxing/unboxing(自动装箱和拆箱)

?自动将基础类型转换为对象

1.4

2.4、日期类

常用日期类:

java.util.Date

java.text.SimpleDateFormat

java.util.Calendar

1.5

2.5、数字类

Java.text.DecimalFormat和java.math.BigDecimal 【示例代码】,DecimalFormat

【示例代码】,BigDecimal可以精确计算,特别是财务数据

1.6

2.6、Random

Random位于java.util包下,可以产生随机数

1.6.1

2.6.1、生成5个0~100之间的整数随机数

1.7

2.7、Enum

1.7.1

2.7.1、为什么使用枚举

1.7.2

2.7.1、改进示例一

1.7.3

2.7.1、采用枚举改进

1.8

2.8、补充public static void main(String[] args),数组如何传值

java MainTest01 A

实验5 JAVA常用类

山西大学计算机与信息技术学院 实验报告 姓名学号专业班级 课程名称 Java实验实验日期成绩指导教师批改日期 实验5 JAVA常用类实验名称 一.实验目的: (1)掌握常用的String,StringBuffer(StringBuilder)类的构造方法的使用;(2)掌握字符串的比较方法,尤其equals方法和==比较的区别; (3)掌握String类常用方法的使用; (4)掌握字符串与字符数组和byte数组之间的转换方法; (5)Date,Math,PrintWriter,Scanner类的常用方法。 二.实验内容 1.二进制数转换为十六进制数(此程序参考例题249页9. 2.13) 程序源代码 import java.util.*; public class BinToHexConversion{ //二进制转化为十六进制的方法 public static String binToHex(String bin){ int temp; //二进制转化为十六进制的位数 if(bin.length()%4==0) temp = bin.length()/4; else temp = bin.length()/4 + 1; char []hex = new char[temp]; //十六进制数的字符形式 int []hexDec = new int[temp];//十六进制数的十进制数形式 int j = 0; for(int i=0;i=0&&dec<10) return (char)('0'+dec-0); else if(dec>=10&&dec<=15) return (char)('A'+dec-10); else return '@'; }

JAVA中常用类的常用方法

JAVA中常用类的常用方法 一、类 1、clone()方法 创建并返回此对象的一个副本。要进行“ 克隆” 的对象所属的类必须实现. Cloneable接口。 2、equals(Object obj)方法 功能:比较引用类型数据的等价性。 等价标准:引用类型比较引用,基本类型比较值。 存在特例:对File、String、Date及封装类等类型来说,是比较类型及对象的内 容而不考虑引用的是否为同一实例。 3、finalize()方法 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。 4、hashCode()方法 返回该对象的哈希码值。 5、notify()方法 唤醒在此对象监视器上等待的单个线程。 6、notifyAll()方法 唤醒在此对象监视器上等待的所有线程。 7、toString()方法 返回该对象的字符串表示。在进行String与其它类型数据的连接操作时,自动调用toString()方法。可以根据需要重写toString()方法。 8、wait()方法 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。 二、字符串相关类 String类 charAt(int index) 返回指定索引处的 char 值。 compareTo(String anotherString) 按字典顺序比较两个字符串。 compareToIgnoreCase(String str) 按字典顺序比较两个字符串,不考虑大小写。 concat(String str) 将指定字符串连接到此字符串的结尾。 endsWith(String suffix) 测试此字符串是否以指定的后缀结束。 equals(Object anObject) 将此字符串与指定的对象比较。 equalsIgnoreCase(String anotherString) 将此 String 与另一个 String 比 较,不考虑大小写。 indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。 indexOf(String str) 返回第一次出现的指定子字符串在此字符串中的索引。 lastIndexOf(int ch) 返回指定字符在此字符串中最后一次出现处的索引。 length() 返回此字符串的长度。 replace(char oldChar, char newChar)

JAVA中常用类的常用方法

JAVA屮常用类的常用方法 一.java?丨ang.Object 类 1、clone()方法 创建丼返M此对象的一个副木。要进行“克隆”的对象所属的类必须实现https://www.doczj.com/doc/cd7203393.html,ng. Cloneable 接口。 2、equals(Objectobj)方法 0 功能:比较引用类型数据的等价性。 0 等价标准.?引用类型比较引用,基木类型比较值。 0 存在特例.?对File、String、Date及封装类等类型来说,是比较类型及对象的内稃而+ 考虑引用的是否为同一实例。 3、finalize〇方法 当垃圾丨"丨收器确定>(、存在对该对象的更多引用时,由对象的垃圾丨"丨收器调用此方法。 4、hashCode〇方法返 回该对象的哈希码值。 5、notify〇方法 唤醒在此对象监视器上等待的中?个线祝。 6、notifyAII〇方法 唤醒在此对象监视器上等待的所有线程= 7、toString()方法 返W该对象的字符串表示。在进行String与其它类型数据的连接操作时,&动调用tostringo 方法。可以根据耑要重写toStringO方法。 8、wait()方法 在其他线程调用此对象的n〇tify()方法或notifyAIIO方法前,异致当前线程等待。 二、字符串相关类 I String 类 charAt(int index)返回指定索引处的char值。compareTo{String anotherString)按字

典顺序比较两个字符串。compareTolgnoreCase(Stringstr)按字典顺序比较两个字 符串,不考虑人小写。concat(String str)将指定字符串连接到此字符串的结尾。 endsWith(String suffix)测试此字符串是否以指定的〗?缀结束。equals{Object anObject)将此字符串与指定的对象比较。 equalslgnoreCase(String anotherString)将此String 与另一个String 比较,考虑人小'与’。indexOf(int ch)返H指定字符在此字符串屮第一次出现处的索引。 indexOf(String str)返回第一次出现的指定子字符串在此字符串屮的索引, lastlndexOf(intch)返回指定字符在此字符串中最后??次出现处的索引。 length()返|n丨此字符串的长度。 replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用newChar替换此字符串中出现的所有oldChar得到的。 split(String regex)根据给定正则表达式的匹配拆分此字符串。startsWith{String prefix)测试此字符 串是否以指定的前缀开始。substring(int beginlndex) 返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。 substring(int beginlndex, int endlndex) 返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的beginlndex 处开始,一直到索引endlndex-1处的字符。 t〇CharArray()将此字符串转换为一个新的字符数组。

Java工程师就业前景分析

2017年Java工程师就业前景分析 新年伊始,2017年不期而至。这是找工作的热门时期,据前 程无忧、智联招聘等招聘网站的数据分析显示,Java软件工程师需求量已达到20余万人,比上一年增长了近百分之三十。综合来看, 近几年的Java开发的就业前景还是很不错的,市场需求依然很大, 很多企业还未招聘到自己最需要的技术人员,所以趁现在赶快来学习吧,学好Java软件开发技术,实现高薪就业,轻松当职场白领。 随着新兴互联网行业的迅速发展,传统企业的互联网化,Java工程师的需求量不断增加,现在已经成为了高度紧缺的工作岗 位之一,薪水待遇也是相当不错的。所以学习Java知识,成为一名Java软件工程师发展前途是非常光明的,学好Java,可以利用Java 开发软件改变你的生活和工作,走上自已的职场白领和金领的道路 上。让自己在软件开发中享受了乐趣,在使用软件中享受了生活。 Java发展如此迅速,很多人都想进入该行业,但是又不知 道如何实现就业,动力节点现在给零基础学员提供了快速进入该行业 的机会,没钱没关系,先学习就业后再付学费,没学会没关系,提供 免费重学制度,哪里不会重新再学,学会为止。 动力节点,在2017年来看,Java软件开发行业依然一片光明,成为Java软件工程师依然是一个不错的选择,来这里学习Java 技术,专业的Java培训机构,专注Java培训八年多了,国内高端IT培训品牌,专注于Java教育事业的培训,只做一科。专业的师资

团队,强大的师资力量,各个Java老司机,Java开发授课经验十年以上,均为硕士学位,拥有先进的教学体系和专业的就业辅导课程,零基础入学,从低级到高级Java培训课程,学完推荐就业,只要你肯认学,高薪就业不是梦想,只要你肯努力,一切皆有可能。 [2017年Java工程师就业前景分析]

史上最全Java基础知识点归纳

史上最全Java基础知识点归纳 写这篇文章的目的是想总结一下自己这么多年来使用Java的一些心得体会,主要是和一些Java基础知识点相关的,所以也希望能分享给刚刚入门的Java 程序员和打算入Java开发这个行当的准新手们,希望可以给大家一些经验,能让大家更好学习和使用Java。 这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE 相关的、和Java中各个框架相关的内容。 经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容。 1.JVM相关(包括了各个版本的特性) 对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。不过对于一个有着3年以上Java经验的资

深开发者来说,不会JVM几乎是不可接受的。 JVM作为Java运行的基础,很难相信对于JVM一点都不了解的人可以把Java语言吃得很透。我在面试有超过3年Java经验的开发者的时候,JVM几乎就是一个必问的问题了。当然JVM不是唯一决定技术能力好坏的面试问题,但是可以佐证Java开发能力的高低。 在JVM这个大类中,我认为需要掌握的知识有: JVM内存模型和结构 GC原理,性能调优 调优:Thread Dump,分析内存结构 class二进制字节码结构,class loader体系,class加载过程,实例创建过程 方法执行过程 Java各个大版本更新提供的新特性(需要简单了解) 2.Java的运行(基础必备) 这条可能出看很简单,Java程序的运行谁不会呢?不过很多时候,我们只是单纯通过IDE去执行Java程序,底层IDE又是如何执行Java程序呢?很多人并不了解。

JAVA中常用类的常用方法

JAVA中常用类的常用方法 一、https://www.doczj.com/doc/cd7203393.html,ng.Object类 1、clone()方法 创建并返回此对象的一个副本。要进行“克隆”的对象所属的类必须实现https://www.doczj.com/doc/cd7203393.html,ng. Cloneable接口。 2、equals(Object obj)方法 ?功能:比较引用类型数据的等价性。 ?等价标准:引用类型比较引用,基本类型比较值。 ?存在特例:对、Date及封装类等类型来说,是比较类型及对象的内容而不考虑引用的是否为同一实例。 3、finalize()方法 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。 4、hashCode()方法返回该对象的哈希码值。 5、notify()方法唤醒在此对象监视器上等待的单个线程。 6、notifyAll()方法唤醒在此对象监视器上等待的所有线程。 7、toString()方法 返回该对象的字符串表示。在进行String与其它类型数据的连接操作时,自动调用toString()方法。可以根据需要重写toString()方法。 8、wait()方法 在其他线程调用此对象的notify() 方法或notifyAll() 方法前,导致当前线程等待。 二、字符串相关类 l String类 charAt(int index) 返回指定索引处的char 值。 compareTo(String anotherString) 按字典顺序比较两个字符串。 compareToIgnoreCase(String str) 按字典顺序比较两个字符串,不考虑大小写。 concat(String str) 将指定字符串连接到此字符串的结尾。 endsWith(String suffix) 测试此字符串是否以指定的后缀结束。 equals(Object anObject) 将此字符串与指定的对象比较。 equalsIgnoreCase(String anotherString) 将此String 与另一个String 比较,不考虑大小写。indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。 indexOf(String str) 返回第一次出现的指定子字符串在此字符串中的索引。 lastIndexOf(int ch) 返回指定字符在此字符串中最后一次出现处的索引。 length() 返回此字符串的长度。 replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用newChar 替换此字符串中出现的所有oldChar 得到的。split(String regex) 根据给定正则表达式的匹配拆分此字符串。 startsWith(String prefix) 测试此字符串是否以指定的前缀开始。 substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。 substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的beginIndex 处开

Java基础入门教程(适合所有初学者)

第1章 Java语言概述与面向对象思想 1 1.1 Java语言的发展 1 1.1.1 Java语言的产生 1 1.1.2 Java语言的发展 1 1.2 Java语言的特点 2 1.3 面向对象与面向过程的差异 3 1.3.1 面向过程思想回顾 4 1.3.2 面向对象思想介绍 4 1.4 面向对象程序设计中的主要概念和特征 4 1.4.1 主要概念 5 1.4.2 主要特征 5 *1.5 Java与C++的差异 5 1.6本章小结5 习题 5 第2章 Java语言开发环境 6 2.1 JDK 6 2.1.1 JDK的简介6 2.1.2 JDK的构成6 2.1.3 JDK的使用6 2.2 IDE 8 2.2.1 IDE简介8 2.2.2 JBuilder 9 2.2.3 Eclipse 9 2.2.4 相关资源9 2.3 Project管理9 2.3.1 Project的含义9 2.3.2 可行的Project组织模式9 2.3.3 主要开发工具的Project目录10 2.4 本章小结10 习题10 第1章 Java语言概述与面向对象思想 1.1 Java语言的发展 1.1.1 Java语言的产生以介绍面向对象编程的基本概念、基本理论为重点,结合Java语言的语法规则、编程特点和设计思想、强调容易发生错误和编程应注意的地方,使学生能对Java 技术有一个总体了解,通过本课程学习,使学生掌握Java语言的基础知识,理解和掌握面向对象程序设计的基本思想,熟练地使用Java语言进行程序的编写、编译以及调试工作 上世纪90年代初期,Sun公司在研究一种适用于未来的智能设备的编程语言,该语言要具有一些新的特性,以避免C++的一些不足。 该语言起初命名为Oak,来源于语言作者Gosling办公室窗外的一棵橡树(Oak)。后来在注册时候遇到了冲突,于是就从手中的热咖啡联想到了印度尼西亚一个盛产咖啡的岛屿,中文名叫爪哇,Java语言得名于此。 随着Internet的迅速发展,Web应用日益广泛,Java语言也得到了迅速发展。1994年,Gosling

java常用词汇

Abstract class 抽象类:抽象类是不允许实例化的类,因此一般它需要被进行扩展继承。 Abstract method 抽象方法:抽象方法即不包含任何功能代码的方法。 Access modifier 访问控制修饰符:访问控制修饰符用来修饰Java中类、以及类的方法和变量的访问控制属性。 Anonymous class 匿名类:当你需要创建和使用一个类,而又不需要给出它的名字或者再次使用的使用,就可以利用匿名类。 Anonymous inner classes 匿名内部类:匿名内部类是没有类名的局部内部类。 API 应用程序接口:提供特定功能的一组相关的类和方法的集合。 Array 数组:存储一个或者多个相同数据类型的数据结构,使用下标来访问。在Java中作为对象处理。 Automatic variables 自动变量:也称为方法局部变量method local variables,即声明在方法体中的变量。 Base class 基类:即被扩展继承的类。HP0-538 Blocked state 阻塞状态:当一个线程等待资源的时候即处于阻塞状态。阻塞状态不使用处理器资源 Call stack 调用堆栈:调用堆栈是一个方法列表,按调用顺序保存所有在运行期被调用的方法。 Casting 类型转换 :即一个类型到另一个类型的转换,可以是基本数据类型的转换,也可以是对象类型的转换。 char 字符:容纳单字符的一种基本数据类型。 Child class 子类:见继承类Derived class Class 类:面向对象中的最基本、最重要的定义类型。350-018 Class members 类成员:定义在类一级的变量,包括实例变量和静态变量。 Class methods 类方法:类方法通常是指的静态方法,即不需要实例化类就可以直接访问使用的方法。 Class variable 类变量:见静态变量Static variable

Java常用类库介绍

教学内容 第七讲Java常用类库介绍 7.1 Java类库的结构 类库就是Java API(Application Programming Interface,应用程序接口),是系统提供的已实现的标准类的集合。在程序设计中,合理和充分利用类库提供的类和接口,不仅可以完成字符串处理、绘图、网络应用、数学计算等多方面的工作,而且可以大大提高编程效率,使程序简练、易懂。 Java类库中的类和接口大多封装在特定的包里,每个包具有自己的功能。表7.1列出了Java中一些常用的包及其简要的功能。其中,包名后面带“. *”的表示其中包括一些相关的包。有关类的介绍和使用方法,Java中提供了极其完善的技术文档。我们只需了解技术文档的格式就能方便地查阅文档。 表7.1Java提供的部分常用包 注:在使用Java时,除了https://www.doczj.com/doc/cd7203393.html,ng外,其他的包都需要import语句引入之后才能使用。 7.2 https://www.doczj.com/doc/cd7203393.html,ng包中的常用类

https://www.doczj.com/doc/cd7203393.html,ng是Java语言最广泛使用的包。它所包括的类是其他包的基础,由系统自动引入,程序中不必用import语句就可以使用其中的任何一个类。https://www.doczj.com/doc/cd7203393.html,ng中所包含的类和接口对所有实际的Java程序都是必要的。下面我们将分别介绍几个常用的类。 7.2.1 String类和StringBuffer类 许多语言中,字符串是语言固有的基本数据类型。但在Java语言中字符串通过String类和StringBuffer类来处理。 1.String类 Java语言中的字符串属于String类。虽然有其它方法表示字符串(如字符数组),但Java使用String 类作为字符串的标准格式。Java编译器把字符串转换成String对象。String对象一旦被创建了,就不能被改变。如果需要进行大量的字符串操作,应该使用StringBuffer类或者字符数组,最终结果可以被转换成String格式。 (1)创建字符串 创建字符串的方法有多种方式,通常我们用String类的构造器来建立字符串。表6.2列出了String 类的构造器及其简要说明。 表7.2 String类构造器概要 【例7.1】使用多种方法创建一个字符串并输出字符串内容。 public class StrOutput { public static void main(Sring[] args) { //将字符串常量作为String对象对待,实际上是将一个String对象赋值给另一个 String s1 = "Hello,java!"; //声明一个字符串,然后为其赋值 String s2; s2 = "Hello,java!";

--动力节点之java的知识点归纳总结

1. 基本数据类型 整形: byte 1 个字节 short 2 个字节 int 4个字节 long 8个字节 字符: char 2个字节 浮点数: float 4个字节 double 8个字节 布尔: boolean 1个字节 2.java 7 新增二进制整数 以0b或者0B开头 3.java中字符时16位的Unicode编码方式,格式是'\uXXXX',其中xxxx代表一个十六进制整数 4.java中规定了正无穷大、负无穷大和零 正无穷大= 一个正数除以0 负无穷大= 一个负数除以零 0.0 除以0.0 或者对一个负数开方得到一个非数 5. 在java中布尔类型只能是true和false 6. 在java中没有多维数组 动力节点

看似像C语言中的多维数组不是真正的数组,比如 a[3][4] , a[0] a[1] a[2] 是真实存在的,装的是地址,和 c语言中动态分配为的数组一样 int [][] b = new int[3][4] 7. Java中带包的编译方法 javac -d . Hello.java 会在当前目录下生成目录树 运行 java 包名字.类名字 8. Java多态中的对象的filed 不具有多态性,如父类对象 = new 子类(),对象.field 是调用的父类的,即使子类中覆盖了该字段。 9. instanceof 运算符 格式:引用变量名 instanceof 类名(或者接口)他用于判断前面的对象是否是后面对象的类,子类、实 现类的实例,是返回true,否者返回false 10. Java 中基本数据类型和对应封装类之间的转化 int a = 1; Integer A = new Integer(a); a = A.intValue(); 其他的类型也是这样的。 11.单例(singleton)类例子 复制代码代码如下: class Singleton { private static Singleton instance; private Singleton(){} public static Singleton getInstance() { 动力节点

JAVA技术--Java基础知识常见考试题JAVA技术.doc

一、单选题 1.对类:(B) public class Test( //...do something } 下面那个正确地定义了类Test的构造函数。 A)public void Test() () B)publicTest()(} C ) public static Test() (} D) publicTest(); 2.下面哪个函数是public void example()(...)的重载函数。(A) A)public void example( float f)(...) B)public int example() (...) C)public void example2()(...} D)public int example_overLoad ()(...) 3.下面的代码段中,执行之后i和j的值是_C_。 int i = 1; intj; j = i++; A)1, 1 B) 1,2 C) 2, 1 D) 2,2 4.以下for循环的执行次数是_B o for(int x=0,y=0;(y !=0)&&(x<4) ;x++); A)无限次B) 一次也不执行 C)执行4次D)执行3次 5.下面程序的输出结果是—C o public class People( String name; int id; public People( String str, int n )( name = str; id = n; } public String toString(){ return id + " :” + name; } public String print()(

动力节点 面试题 JVM

JVM相关面试题 1.JVM运行时内存结构 1.由如下图构成。Runtime Data Area有如下几个区,其中PC程序计数器、虚拟机栈和本地方法栈是线程独享的,堆和方法区是线程共享的。Classload用来加载class文件,执行引擎用来执行程序,本地方法接口调用本地方法库。 2.java stack比较简单,每一个都是一个栈帧,每个栈帧由三部分构成。局部变量区、操作数区和帧数据区。局部变量是一个以数组形式管理的内存区,一般第0位是指向自己的this引用;其他的都是基本数据类型和reference类型和returnedAddress类型。操作数区不是通过索引来访问,通过入栈出栈来访问,是临时数据的存储区域,比方说数学计算。帧数据区是保存一些指向常量池的指针,需要常量数据时就通过这个指针来访问常量池数据。

3. 共享内存区:分为permanent space、old space、From survivor、To survivor和Eden。其中premanent包括runtime constant pool和已加载的类信息和方法信息。Old space(tenured generation)包含生命周期长的存活对象。From survivor和Eden存放存活比较短的对象,To survivor是用来复制保存存活的对象。 4.JVM参数设置。 堆: -Xmx:最大堆内存,如:-Xmx512m -Xms:初始时堆内存,如:-Xms256m -XX:MaxNewSize:最大年轻区内存 -XX:NewSize:初始时年轻区内存.通常为 Xmx 的 1/3 或 1/4。新生代= Eden + 2 个 Survivor 空间。实际可用空间为 = Eden + 1 个 Survivor,即 90% -XX:MaxPermSize:最大持久带内存 -XX:PermSize:初始时持久带内存 -XX:+PrintGCDetails。打印 GC 信息 -XX:NewRatio 新生代与老年代的比例,如 – XX:NewRatio=2,则新生代占整个堆空间的1/3,老年代占2/3 -XX:SurvivorRatio 新生代中 Eden 与 Survivor 的比值。默认值为 8。即 Eden 占新生代空间的 8/10,另外两个 Survivor 各占 1/10 栈: -xss:设置每个线程的堆栈大小. JDK1.5+ 每个线程堆栈大小为 1M,一般来说如果栈不是很深的话, 1M 是绝对够用了的。List集合存储元素特点? 2.对象和内存溢出 1.对象。 A.创建。首先检查指令的参数能不能在常量区找到类的符号引用,并检查这个类是否加载、解析和初始化过,如果没有就执行类的加载过程 。其次是内存分配,类加载之后就知道要分配的内存大小,分配方法 有两种,一种是指针碰撞,就是一块内存是使用过的,一块是未使用 的,用一个指针分割,新分配的内存指针就向空闲的挪动,compact 功能的虚拟机是用指针碰撞;另一种是空闲列表,就是一个列表记录

JAVA中常用的类

public static void main(String[] args) { String str1; str1 = "你好"; // 使用字符串常量构造一个字符串 String str2 = new String("你好"); // String类中重写了父类Object类的equals方法 // String类中的equals方法比较的是字符串的内容 // 使用String类中的equals方法时,建议将字符串常量写在前面 String str3 = null; System.out.println("你好".equals(str3));//正确写法 //System.out.println(str3.equals("你好"));//错误写法 // 使用equals方法 System.out.println(str1.equals(str2));//true System.out.println(str1 == str2);//false

// 使用char数组构造一个字符串 char [] ch1 = {'a', 'b', 'c'}; String str4 = new String(ch1); System.out.println("str4: " + str4); char [] ch2 = {'a', 'b', 'c', 'd', 'e', 'f'}; String str5 = new String(ch2, 2, 2); System.out.println("str5: " + str5); // 使用byte数组构造一个字符串 //byte [] by1 = {-50, 3, 100}; byte [] by1 = "测试".getBytes(); String str6 = new String(by1); System.out.println("str6: " + str6); // String类中的equals方法和等号String str7 = "西安网星"; String str8 = "西安网星"; System.out.println(str7.equals(str8));//true

北京动力节点-Spring4讲义-第4章Spring与DAO

第4章Spring与DAO 本章内容主要包含两部分:Spring所使用的操作数据库的技术之一,JDBC模板的使用;另一部分则为Spring对于事务的管理。 Spring与Dao部分,是Spring的两大核心技术IoC与AOP的典型应用体现: 对于JDBC模板的使用,是IoC的应用,是将JDBC模板对象注入给了Dao层的实现类。 对于Spring的事务管理,是AOP的应用,将事务作为切面织入到了Service层的业务方法中。 4.1 Spring与JDBC模板 为了避免直接使用JDBC而带来的复杂且冗长的代码,Spring提供了一个强有力的模板类---JdbcT emplate来简化JDBC操作。并且,数据源DataSource对象与模板JdbcT emplate对象均可通过Bean的形式定义在配置文件中,充分发挥了依赖注入的威力。 举例:项目dao_jdbcTemplate 4.1.1 导入Jar包 除了Spring的基本Jar包,数据库驱动Jar外,还需要导入两个Jar包。它们均在Spring 框架解压目录下的libs目录中。 (1)Spring的JDBC Jar包 (2)Spring的事务Jar包

4.1.2 搭建测试环境 (1)定义实体类User (2)定义数据库及表 (3)定义 IUserDao

(4)初步定义UserDaoImpl 这里仅仅定义一个UserDaoImpl类实现了IUserDao接口,但不具体写每个方法的方法实现。保持默认即可。后面会逐个通过Jdbc模板来实现。 (5)定义IUserService

(6)定义UserService (7)定义测试类MyTest 4.1.3 数据源的配置 使用JDBC 模板,首先需要配置好数据源,数据源直接以Bean 的形式配置在Spring 配置文件中。根据数据源的不同,其配置方式不同。下面主要讲解三种常用数据源的配置方式: (1)Spring 默认的数据源 (2)DBCP 数据源 (3)C3P0数据源 (1)Spring 默认的数据源DriverManagerDataSource Spring 默认的数据源为DriverManagerDataSource ,其有一个属性DriverClassName , 用于

java常用类知识点总结

java常用类知识点总结 Java常用类 要求: 1、掌握String和StringBuffer的区别,可以熟练使用String和StringBuffer的各 种方法进行相关操作。 2、能够自己编写一个得到日期的操作类,并将日期进行格式化操作。 3、掌握比较器及其基本原理,并可以通过比较器进行对象数组的比较操作。 4、掌握对象克隆技术及其实现 5、能够灵活应用正则表达式对字符串的组成进行判断 6、掌握Math、Random、基本数据类型的包装类的使用 7、描述出Object System对垃圾收集的支持 8、使用NumberFormat、DecimalFormat、BigInteger、BigDecimal进行数字的操 作 String和StringBuffer String的内容一旦声明不可改变,如果要改变,改变的是String的引用地址,如果一个字符串要经常改变,必须使用StringBuffer。 在一个字符串内容需要频繁修改时,使用StringBuffer可以提升操作性能,因为StringBuffer内容可以改变,而String内容不可改变。StringBuffer支持的方法大部分与String类似。 StringBuffer常见用法: (1) 字符串的连接操作

String类可以通过“+“进行字符串的连接,而StringBuffer中却只能使用append方法进行字符串的连接,而且此方法返回一个StringBuffer类的实例,这样就可以采用代码链的形式一直调用append方法。 (2) 在任意位置处为StringBuffer添加内容 可以使用insert方法在指定位置上为StringBuffer添加内容 字符串的反转操作(较为常见的操作,使用reverse方法) (3) 替换指定范围的内容 replace方法可对指定范围的内容进行替换。在String中如果要替换,使用的是replaceAll (4) 字符串截取(使用subString方法从指定范围中截取内容) (5) 删除指定范围的字符串(使用delete方法删除指定范围内容) (6) 查找指定内容是否存在(indexOf查找指定内容,查找到返回内容的位置, 没查到返回-1) 问题:(1)String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有, 没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。在这段代码中,s原先指向一个String对象,内容是 "Hello",然后我们对s进行了+操作,那么s所指向的那个对象是否发生了改变呢,答案是没有。这时,s不指向原来那个对象了,而指向了另一个 String对象,内容为"Hello world!",原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了。通过上面的说明,我们很容易导出另一个结论,如果经常对字符串进行各种各样的修改, 或者说,不可预见的修改,那么使用String来代表字符串的话会引起很大的内存开销。因为 String对象建立之后不能再改变,所以对于每一个不同的字符

Java实验 常用系统类

实验六常用系统类 【开发语言及实现平台或实验环境】 Windows2000 或XP,JDK1.6与Jcreator4.0 【实验目的】 1.了解Java 常用的系统类,包括Java Applet、字符串类、输入输出流类、数学函数类、日期类、随机数类以及向量类等的基本使用方法。 2.理解Java 系统类的构成。 【实验要求】 1. 进一步了解Applet 类。 2. 掌握字符串类的使用方法。 3. 掌握数学函数类的使用方法。 4. 掌握日期类的使用方法。 5. 掌握向量类的使用方法 【实验内容】 (一)了解Applet 的生命周期 程序运行从开始大结束的过程称为程序的生命周期。独立应用程序的生命周期从main ()方法开始,直到运行结束。而Applet 应用程序的生命周期与浏览器相关。作为浏览器的一部分,Applet 程序何时运行,何时结束都由浏览器控制,Applet 对象只是作为浏览器窗口中运行的一个线程。浏览器与Applet 具有如下关系。 ●在浏览器中打开包含Applet 对象的页面时,创建并初始化其中的Applet 对象。 ●显示Applet 时,启动Applet 线程运行。 ●不显示Applet 时,停止 Applet 线程运行。 ●在浏览器中关闭页面窗口时,销毁Applet 对象。 与此相应,Applet 类中声明了与生命周期相关的4 个方法:init()、start()、stop()、destroy()。4 个方法代表Applet 的4 个活动阶段。 1.创建揭示Applet 生命周期的程序LX5_1.java。 (1)程序功能:本程序包含Applet 的4 个与生命周期相关的方法init()、start()、stop()、destroy()。程序中创建了自定义方法addWords()来显示相应的字符串。addWords 方法首先在标准输出即屏幕上显示字符串参数,然后将字符串添加到字符串缓冲区buffer,通过调用repaint 方法重画页面,首先自动调用updata 方法将当前画面清空,然后再调用paint 方法在指定位置显示字符串。 (2)编写LX5_1.java 程序文件,源代码如下。 import java.applet.Applet; import java.awt.Graphics; public class LX5_1 extends Applet { StringBuffer buffer=new StringBuffer(); public void init() { addWords("执行了初始化方法 init()..."); } public void start() { addWords("执行了开始方法start()...");

-动力节点-Java Executor 框架学习总结

动力节点大多数并发都是通过任务执行的方式来实现的。一般有两种方式执行任务:串行和并行。 class SingleThreadWebServer { public static void main(String[] args) throws Exception { ServerSocket socket = new ServerSocket(80); while(true) { Socket conn = socket.accept(); handleRequest(conn); } } } class ThreadPerTaskWebServer { public static void main(String[] args) throws Exception { ServerSocket socket = new ServerSocket(80); while(true) { final Socket conn = socket.accept(); Runnable task = new Runnable() { public void run() { handleRequest(conn); } }; new Thread(task).start(); } } } 当然上面的这两种方式都是有问题的。单线程的问题就是并发量会是瓶颈,多线程版本就是无限制的创建线程会导致资源不足问题。 Executor 框架 任务是一组逻辑工作单元,而线程是使任务异步执行的机制。 JDK 提供了 Executor 接口: public interface Executor { void execute(Runnable command); } 虽然 Executor 接口比较简单,但是却是异步任务执行框架的基础,该框架能支持多种不同类型的任务执行策略。它提供了一种标准的方式把任务的提交过程与执行过程进行了解 耦。用 Runnable 来代表任务。 Executor 的实现提供了对生命周期的支持以及统计信息应用程序管理等机制。 Executor 是基于生产者消费者模式的,提交任务的操作相当于生产者,执行任务的线程相当于消费。 基于 Executor 的 WebServer 例子如下: public class TaskExecutorWebServer { private static final int NTHREADS = 100; private static final Executor exec = Executors.newFixedThreadPool(NTHREADS); public static void main(String[] args) throws Exception { ServerSocket serverSocket = new ServerSocket(80); while (true) { final Socket conn = serverSocket.accept(); Runnable task = new Runnable() { @Override public void run() { handleRequest(conn); } }; exec.execute(task); } } } 另外可以自己实现 Executor 来控制是并发还是并行的,如下面代码: /** * 执行已提交的 Runnable 任务的对象。 * 此接口提供一种将任务提交与每个任务将如何运行的机制(包括线程使用的细节、调度等)分离开来的方法。 * 通常使用 Executor 而不是显式地创建线程。 * * * @author renchunxiao * */ public class ExecutorDemo { public static void main(String[] args) { Executor executor = new ThreadExecutor(); executor.execute(new Runnable() { @Override public void run() { // do something } }); Executor executor2 = new SerialExecutor(); executor2.execute(new Runnable() { @Override

相关主题
文本预览
相关文档 最新文档