basketballh 2019-11-17
点关注,不迷路;持续更新Java架构相关技术及资讯热文!!!
答:super.clone(),他负责产生正确大小的空间,并逐位复制。
答:GC 是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java 提供的GC 功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java 语言没有提供释放已分配内存的显示操作方法。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:System.gc() 或Runtime.getRuntime().gc() 。
答:
回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。
答:
答:两个对象,一个是"xyx",一个是指向"xyx"的引用对象s。
答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类可继承实体类,但前提是实体类必须有明确的构造函数。
c++虚类相当与java里面的抽象类,与接口的不同之处如下:
接口只能是public;
接口中的方法只能是public和default。
相同之处:都不能实例化。
接口是一类特殊的抽象类,是更抽象的抽象类。
答:可以;一个“.java”源文件里面可以包含多个类,但是只允许有一个public类,并且类名必须和文件名一致。
答:
答:可以继承其他类或实现其他接口,在swing 编程中常用此方式。
答:可以,如果不是静态内部类,那没有什么限制! 如果你把静态嵌套类当作内部类的一种特例,那在这种情况下不可以访问外部类的普通 成员变 量,而只能访问外部类中的静态成员
答:方法的覆盖Overriding 和重载Overloading 是java 多态性的不同表现;覆盖Overriding 是父类与子类之间多态性的一种表现,重载Overloading 是一个类中多态性的一种表现。
答:表示该类不能被继承,是顶级类。
答:1、2、7 可以被继承。
class A {
static {
System.out.print("1");
}
public A() {
System.out.print("2");
}
}
class B extends A {
static {
System.out.print("a");
}
public B() {
System.out.print("b");
}
}
public class Hello {
public static void main(String[] ars) {
A ab = new B();
// 执行到此处,结果: 1a2b
ab = new B();
// 执行到此处,结果: 1a2b2b
}
}答:输出结果为1a2b2b;类的static 代码段,可以看作是类首次加载(虚拟机加载)执行的代码,而对于类加载,首先要执行其基类的构造方法,再执行其本身的构造方法。
父类:
public class FatherClass {
public FatherClass() {
System.out.println("FatherClass Create");
}
}子类:
public class ChildClass extends FatherClass {
public ChildClass() {
System.out.println("ChildClass Create");
}
public static void main(String[] args) {
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}答:输出结果为:
FatherClass Create FatherClass Create ChildClass Create
答:示例代码如下:
public class OuterClass {
private class InterClass {
public InterClass() {
System.out.println("InterClass Create");
}
}
public OuterClass() {
InterClass ic = new InterClass();
System.out.println("OuterClass Create");
}
public static void main(String[] args) {
OuterClass oc = new OuterClass();
}
}输出结果为:
InterClass Create OuterClass Create
public class OuterClass {
private double d1 = 1.0;
//insert code here
}在第3行插入一个内部类声明,哪两个内部类声明有效?(选择两个。)
A.
class InnerOne{
public static double methoda() {return d1;}
}B.
public class InnerOne{
static double methoda() {return d1;}
}C.
private class InnerOne{
double methoda() {return d1;}
}D.
static class InnerOne{
protected double methoda() {return d1;}
}E.
abstract class InnerOne{
public abstract double methoda();
}答:答案为C、E;说明如下:
答:
1)调用数值类型相应包装类中的方法parse*(String)或valueOf(String)即可返回相应基本类型或包装类型数值;
2)将数字与空字符串相加即可获得其所对应的字符串;对于基本类型数字还可调用String 类中的valueOf(…)方法返回相应字符串,而对于包装类型数字则可调用其toString()方法获得相对应字符串;
3) //方法1
public void test1(double c)
{
java.text.DecimalFormat df = new java.text.DecimalFormat("#.##");
System.out.println(df.format(c));
}//方法2
public void test2(double c)
{
java.math.BigDecimal bd = new java.math.BigDecimal(String.valueOf(c));
bd = bd.setScale(2,java.math.BigDecimal.ROUND_HALF_UP);
System.out.println(bd);
}//方法3
public void test3(double c)
{
long l1 = Math.round(c*100);
//四舍五入
double ret = l1/100.0;
//注意:使用 100.0 而不是 100
System.out.println(ret);
}//方法4
public void test4(double c)
{
c=((int)(c*100))/100.0;
System.out.println(c);
}答:可用字符串构造一StringBuffer 对象,然后调用StringBuffer 中的reverse方法即可实现字符串的反转,调用replace 方法即可实现字符串的替换。
public static String reverse(String s){
String str;
StringBuffer sbBuffer =new StringBuffer(s);
str=sbBuffer.reverse().toString();
return str;
}答:
String s1 = "你好";
String s2 = new String(s1.getBytes("GB2312"), "ISO-8859-1");答:代码如下:
public static String[] split(String str, int length) {
int n = (str.length() + length - 1) / length;
String ret[] = new String[n];
for (int i = 0; i < n; i++) {
if (i < n - 1) {
ret[i] = str.substring(i * length, (i + 1) * length);
} else {
ret[i] = str.substring(i * length);
}
}
return ret;
}答:代码如下:
public String subString(String str, int subBytes) {
int bytes = 0;
// 用来存储字符串的总字节数
for (int i = 0; i < str.length(); i++) {
if (bytes == subBytes) {
return str.substring(0, i);
}
char c = str.charAt(i);
if (c < 256) {
bytes += 1;
// 英文字符的字节数看作1
} else {
bytes += 2;
// 中文字符的字节数看作2
if (bytes - subBytes == 1) {
return str.substring(0, i);
}
}
}
return str;
}答:
1)创建java.util.Calendar 实例(Calendar.getInstance()),调用其get()方法传入不同的参数即可获得参数所对应的值,如:calendar.get(Calendar.YEAR);//获得年
2)以下方法均可获得该毫秒数:Calendar.getInstance().getTimeInMillis();System.currentTimeMillis();
3)示例代码如下:
Calendar time = Calendar.getInstance(); time.set(Calendar.DAY_OF_MONTH, time.getActualMaximum(Calendar.DAY_OF_MONTH));
4)利用java.text.DataFormat 类中的format()方法可将日期格式化。
答:
public class YesterdayCurrent {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
System.out.println(cal.getTime());
}
}答:JavaScript 与Java 是两个公司开发的两个不同的产品。Java 是SUN 公司推出的新一代面向对象的程序设计语言,特别适合于Internet 应用程序开发;而JavaScript 是Netscape 公司的产品,其目的是为了扩展Netscape Navigator功能,而开发的一种可以嵌入Web 页面中的基于对象和事件驱动的解释性语言,它的前身是Live Script;而Java 的前身是Oak 语言。下面对两种语言间的异同作如下比较:
答:assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。一般来说,assertion 用于保证程序最基本、关键的正确性。assertion 检查通常在开发和测试时开启。为了提高性能,在软件发布后, assertion 检查通常是关闭的。在实现中,断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为true;如果表达式计算为false,那么系统会报告一个Assertionerror。
断言用于调试目的:
assert(a > 0); // throws an Assertionerror if a <= 0
断言可以有两种形式:
assert Expression1 ; assert Expression1 : Expression2 ;
Expression1 应该总是产生一个布尔值。
Expression2 可以是得出一个值的任意表达式;这个值用于生成显示更多调试信息的String 消息。
断言在默认情况下是禁用的,要在编译时启用断言,需使用source 1.4 标记:
javac -source 1.4 Test.java
要在运行时启用断言,可使用-enableassertions 或者-ea 标记。
要在运行时选择禁用断言,可使用-da 或者-disableassertions 标记。
要在系统类中启用断言,可使用-esa 或者-dsa 标记。还可以在包的基础上启用或者禁用断言。可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。
答:当JAVA 程序违反了JAVA 的语义规则时,JAVA 虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2 种情况。一种是JAVA 类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null 的对象时会引发NullPointerException。另一种情况就是JAVA 允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw 关键字引发异常。所有的异常都是java.lang.Thowable 的子类。
答:
答:会执行,在return 前执行。
分享免费学习资料
针对于Java程序员,我这边准备免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)
为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!
资料领取方式:加入Java技术交流群963944895,点击加入群聊,私信管理员即可免费领取