邵东网站建设,广州软件开发公司排行,优秀网站网页设计分析,网站换域名源码 补码
int i 5;
int j 10;
System.out.println(i ~j);有个公式#xff0c;-n~n1 另一种解题思路 ~代表对n按位取反 10的源码是: 00000000 00000000 00000000 1010 所以对10按位取反就是 11111111 11111111 11111111 0101 由于计算机中-1表示为 11111111 11111111 111…源码 补码
int i 5;
int j 10;
System.out.println(i ~j);有个公式-n~n1 另一种解题思路 ~代表对n按位取反 10的源码是: 00000000 00000000 00000000 1010 所以对10按位取反就是 11111111 11111111 11111111 0101 由于计算机中-1表示为 11111111 11111111 11111111 1111 显然这个码等于-1减1010即10 所以~10的值是-11 其实都不用这么麻烦就看编码中0的位置然后把0对应的10进制数加起来用-1去减就行了。
修饰符
public class Parent {private void m1(){}void m2(){}protected void m3(){}public static void m4(){}}Parent子类中一定能够继承和覆盖Parent类的m3方法 void m2(){}缺省访问修饰符只在本包中可见在外包中不可见
访问权限
抽象类默认访问权限 答default接口方法默认为public 链接: 抽象类在jdk1.8之前抽象类的方法默认访问权限为protectedjdk1.8时变成了是default 接口中的方法在jdk1.8之前是public 在jdk1.8的时候也可以是default到了jdk1.9时也可以是private 字符串替换
String classFile com.jd.. replaceAll(., /) MyClass.class;System.out.println(classFile);答案 Ly8vLy8vL015Q2xhc3MuY2xhc3M (可以用base64在线解密看结果 原因replaceAll 不是replace, replaceAll他的第一个参数是正则表达式
字符串
下面这一段代码输出什么为什么
public class SystemUtil{public static boolean isAdmin(String userId){return userId.toLowerCase()admin;}public static void main(String[] args){System.out.println(isAdmin(Admin));}
}答案 false, 原因是toLowerCase方法中是new String();
字符串 容易错
下面代码输出什么
String s1 coder;
String s2 coder;
String s3 coder s2;
String s4 coder coder;
String s5 s1 s2;
System.out.println(s3 s4);
System.out.println(s3 s5);
System.out.println(s4 codercoder);答案CmZhbHNl77ybZmFsc2XvvJsgdHJ1Ze8mw (可以用base64在线解密看结果 解析s1,s2都是保存在字符串常量池中的对象s3,s5是新创建的对象在堆中s4 指向的也是字符串常量池中的对象 所以有s3s4s3!s5s4“codercoder” s4!s5。 定义字符串的时候看定义时等号右边拼接字符串时有没有使用到变量, 如果有, 则重新创建一个新的对象 链接: 1、栈区由编译器自动分配释放具体方法执行结束后系统自动释放JVM内存资源。 其作用有保存局部变量的值包括1.用来保存基本数据类型的值2.保存类的实例即堆区对象的引用。也可以用来保存加载方法时的帧。 2、堆区一般由程序员分配释放JVM不定时查看这个对象如果没有引用指向这个对象就回收。 其作用为用来存放动态产生的数据包括new出来的实例字符数组等。 同一个类的对象拥有各自的成员变量存储在各自的堆中但是他们共享该类的方法。 3、数据区用来存放static定义的静态成员。 4、常量池JVM为每个已加载的类型维护一个常量池常量池就是这个类型用到的常量的一个有序集合。包括直接常量(基本类型String)和对其他类型、方法、字段的符号引用。池中的数据和数组一样通过索引访问。由于常量池包含了一个类型所有的对其他类型、方法、字段的符号引用所以常量池在Java的动态链接中起了核心作用。常量池存在于堆中。 线程
下面哪个操作会释放锁
A。sleep()
B。wait()
C。join()
D。yield()答案 QkM (可以用base64在线解密看结果 解析 1.sleep会使当前线程睡眠指定时间不释放锁 2.yield会使当前线程重回到可执行状态等待cpu的调度不释放锁 3.wait会使当前线程回到线程池中等待释放锁当被其他线程使用notifynotifyAll唤醒时进入可执行状态 4.当前线程调用 某线程.join时会使当前线程等待某线程执行完毕再结束底层调用了wait释放锁
ThreadLocal
ThreadLocal类用于创建一个线程本地变量 在Thread中有一个成员变量ThreadLocals该变量的类型是ThreadLocalMap,也就是一个Map它的键是threadLocal值就是变量的副本ThreadLocal为每一个使用该变量的线程都提供了一个变量值的副本每一个线程都可以独立地改变自己的副本是线程隔离的。通过ThreadLocal的get()方法可以获取该线程变量的本地副本在get方法之前要先set,否则就要重写initialValue()方法。 ThreadLocal不是用来解决对象共享访问问题的而主要是提供了保持对象的方法和避免参数传递的方便的对象访问方式。一般情况下通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象其他线程是不需要访问的也访问不到的。各个线程中访问的是不同的对象。
类
public class Person{private String name Person;int age0;
}
public class Child extends Person{public String grade;public static void main(String[] args){Person p new Child();System.out.println(p.name);}
}会输出什么 A. 输出Person B. 没有输出 C. 编译出错 D. 运行出错 解析 这里是子类访问父类私有属性报错 Java中对字段属性是静态绑定方法成员是动态绑定这里错在在子类中试图访问父类的private字段所以编译不通过将private去掉就可访问不是动态绑定的问题它本来就属于静态绑定。
静态绑定 静态绑定也叫前期绑定、编译期绑定。 在程序执行前方法已经被绑定也就是说在编译过程中就已经知道这个方法到底是哪个类中的方法此时由 编译器或其它连接程序实现。 java当中的方法只有final、static、private修饰的的方法和构造方法是静态绑定的。
switch public static int switchit(int x) {int j1;switch (x) {case 1:j;case 2:j;case 3:j;case 4:j;case 5:j;default:j;}return jx;}switch除了switch穿透还有在进到case之后default还是会执行
动态绑定
动态绑定体现了Java的继承与多态,在继承链中,JVM一直沿着继承链动态找到带有该方法的实现.
并发
下面程序会输出什么
public static void main(String args[]) {Thread t new Thread() {public void run() {pong();}};t.run();System.out.print(ping);
}
static void pong() {System.out.print(pong);
}答案cG9uZ3Bpbmc (可以用base64在线解密看结果 解析 /*** If this thread was constructed using a separate* codeRunnable/code run object, then that* codeRunnable/code objects coderun/code method is called;* otherwise, this method does nothing and returns.* p* Subclasses of codeThread/code should override this method.** see #start()* see #stop()* see #Thread(ThreadGroup, Runnable, String)*/Overridepublic void run() {if (target ! null) {target.run();}}用start方法才能真正启动线程此时线程会处于就绪状态一旦得到时间片则会调用线程的run方法进入运行状态。 而run方法只是普通方法如果直接调用run方法程序只会按照顺序执行主线程这一个线程。
注意
线程地址空间
线程的通信速度更快切换更快因为他们共享同一进程的地址空间。 线程之间共享进程获得的数据资源所以开销小但不利于资源的管理和保护而进程执行开销大但是能够很好的进行资源管理和保护。
进程与线程
子进程得到的是除了代码段是与父进程共享以外其他所有的都是得到父进程的一个副本子进程的所有资源都继承父进程得到父进程资源的副本子进程可获得父进程的所有堆和栈的数据但二者并不共享地址空间。两个是单独的进程继承了以后二者就没有什么关联了子进程单独运行进程的线程之间共享由进程获得的资源但线程拥有属于自己的一小部分资源就是栈空间保存其运行状态和局部自动变量的。
sync
public class Test {private synchronized void a() {}private void b() {synchronized (this) {}}private synchronized static void c() {}private void d() {synchronized (Test.class) {}}
}A. 同一个对象分别调用方法a和b锁住的是同一个对象
B. 同一个对象分别调用方法a和c锁住的是同一个对象
C. 同一个对象分别调用方法b和c锁住的不是同一个对象
D. 同一个对象分别调用方法a、b、c锁住的不是同一个对象答案QUM (可以用base64在线解密看结果 解析: 修饰非静态方法 锁的是this 对象 修饰静态方法 锁的是class对象
链接 方法a为同步方法方法b里面的是同步块同步方法使用的锁是固有对象this同步块使用的锁可以是任意对象但是方法b里面的同步块使用的锁是对象this所以方法a和方法b锁住的是同一个对象。方法 c为静态同步方法使用的锁是该类的字节码文件也就是Test.class。方法d里面的也是同步块只不过使用的锁是Test.class所以方法c和方法d锁住的是同一个对象。 super
super关键字 目的: 就是显示的告诉子类当前的属性或方法来源于父类。 作用 表示当前类父类对象的引用。 用法: 可以调用父类的属性或方法 super.属性名称或者super.方法名称(参数列表); super可以出现在子类构造方法的第一句代码就表示子类中的构造方法 明确指明了要调用的父类的构造方法来创建父类的对象
备忘
int b aa; // 先赋值后自增
多态作用
多态的作用 不必编写每一子类的功能调用可以直接把不同子类当父类看屏蔽子类间的差异提高代码的通用率/复用率 父类引用可以调用不同子类的功能提高了代码的扩充性和可维护性
volatile和synchronized volatile用来确保将变量的跟新操作通知到其他线程当把变量声明为volatile类型后编译器与运行时都会注意到这个变量是共享的因此不会将该变量上的操作与其他内存操作一起重排序。然而在访问volatile变量时不会执行加锁操作因此也就不会使执行线程阻塞因此volatile变量是一种比 synchronized关键字更轻量级的同步机制。 synchronized 关键字 : 用来给对象和方法或者代码块加锁当它锁定一个方法或者一个代码块的时候同一时刻最多只有一个线程执行这个段代码。 可见性是指线程之间的可见性一个线程修改的状态对另一个线程是可见的。也就是一个线程修改的结果。另一个线程马上就能看到。比如用volatile修饰的变量就会具有可见性。volatile修饰的变量不允许线程内部缓存和重排序即直接修改内存。所以对其他线程是可见的。但是这里需要注意一个问题volatile只能让被他修饰内容具有可见性但不能保证它具有原子性。比如 volatile int a 0之后有一个操作 a这个变量a具有可见性但是a 依然是一个非原子操作也就是这个操作同样存在线程安全问题。 出于运行速率的考虑java编译器会把经常经常访问的变量放到缓存严格讲应该是工作内存中读取变量则从缓存中读。但是在多线程编程中,内存中的值和缓存中的值可能会出现不一致。volatile用于限定变量只能从内存中读取保证对所有线程而言值都是一致的。但是volatile不能保证原子性也就不能保证线程安全。 文章详见这里
异常 代码执行顺序
父类静态代码块父类静态成员变量同级按代码顺序执行子类静态代码块子类静态成员变量同级按代码顺序执行父类匿名代码块父类普通成员变量同级按代码顺序执行父类构造方法子类匿名代码块子类普通成员变量同级按代码顺序执行子类构造方法
class Father {public Father() {System.out.println(父类无参构造方法);}static {System.out.println(父类静态代码块1);}private static int a Help.fatherStaticMemberVarInit();static {System.out.println(父类静态代码块2);}{System.out.println(父类普通代码块1---);}private int b Help.fatherMemberVarInit();{System.out.println(父类普通代码块2---);}public Father(int v) {System.out.println(父类带参构造方法);}
}class Son extends Father {static {System.out.println(子类静态代码块1);}private static int a Help.sonStaticMemberVarInit();static {System.out.println(子类静态代码块2);}{System.out.println(子类普通代码块1);}private int b Help.sonMemberVarInit();{System.out.println(子类普通代码块2);}public Son() {// super(2018);System.out.println(子类构造方法);}
}class Help {public static int fatherStaticMemberVarInit() {System.out.println(父类静态成员变量);return 0;}public static int fatherMemberVarInit() {System.out.println(父类普通成员变量);return 0;}public static int sonStaticMemberVarInit() {System.out.println(子类静态成员变量);return 0;}public static int sonMemberVarInit() {System.out.println(子类普通成员变量);return 0;}
}public class Test {public static void main(String[] args) {Son son1 new Son();System.out.println();Son son2 new Son();}
}注意 静态内容只在类加载时执行一次之后不再执行。 默认调用父类的无参构造方法可以在子类构造方法中利用super指定调用父类的哪个构造方法。
jvm
off-heap叫做堆外内存将你的对象从堆中脱离出来序列化然后存储在一大块内存中这就像它存储到磁盘上一样但它仍然在RAM中。对象在这种状态下不能直接使用它们必须首先反序列化也不受垃圾收集。序列化和反序列化将会影响部分性能所以可以考虑使用FST-serialization使用堆外内存能够降低GC导致的暂停。堆外内存不受垃圾收集器管理也不属于老年代新生代。
堆外内存意味着把内存对象分配在Java虚拟机的堆以外的内存这些内存直接受操作系统管理而不是虚拟机。不属于老年代和新生代
2.新生代 老年代
1程序计数器 几乎不占有内存。用于取下一条执行的指令。 2堆 所有通过new创建的对象的内存都在堆中分配其大小可以通过-Xmx和-Xms来控制。堆被划分为新生代和旧生代新生代又被进一步划分为Eden和Survivor区最后Survivor由FromSpace和ToSpace组成结构图如下所示
新生代。新建的对象都是用新生代分配内存Eden空间不足的时候会把存活的对象转移到Survivor中新生代大小可以由-Xmn来控制也可以用-XX:SurvivorRatio来控制Eden和Survivor的比例旧生代。用于存放新生代中经过多次垃圾回收仍然存活的对象。3栈 每个线程执行每个方法的时候都会在栈中申请一个栈帧每个栈帧包括局部变量区和操作数栈用于存放此次方法调用过程中的临时变量、参数和中间结果。 4本地方法栈 用于支持native方法的执行存储了每个native方法调用的状态 5方法区 存放了要加载的类信息、静态变量、final类型的常量、属性和方法信息。JVM用永久代PermanetGeneration来存放方法区在JDK的HotSpot虚拟机中可以认为方法区就是永久代但是在其他类型的虚拟机中没有永久代的概念有关信息可以看周志明的书可通过-XX:PermSize和-XX:MaxPermSize来指定最小值和最大值。 文章转载自: http://www.morning.lqlhw.cn.gov.cn.lqlhw.cn http://www.morning.pcgrq.cn.gov.cn.pcgrq.cn http://www.morning.jljiangyan.com.gov.cn.jljiangyan.com http://www.morning.rfxw.cn.gov.cn.rfxw.cn http://www.morning.dongyinet.cn.gov.cn.dongyinet.cn http://www.morning.hpkgm.cn.gov.cn.hpkgm.cn http://www.morning.tmzlt.cn.gov.cn.tmzlt.cn http://www.morning.jpydf.cn.gov.cn.jpydf.cn http://www.morning.jsdntd.com.gov.cn.jsdntd.com http://www.morning.rwzc.cn.gov.cn.rwzc.cn http://www.morning.qnbzs.cn.gov.cn.qnbzs.cn http://www.morning.fwllb.cn.gov.cn.fwllb.cn http://www.morning.wyrkp.cn.gov.cn.wyrkp.cn http://www.morning.clhyj.cn.gov.cn.clhyj.cn http://www.morning.tkchg.cn.gov.cn.tkchg.cn http://www.morning.gcxfh.cn.gov.cn.gcxfh.cn http://www.morning.ltcnd.cn.gov.cn.ltcnd.cn http://www.morning.rfwqt.cn.gov.cn.rfwqt.cn http://www.morning.wqmyh.cn.gov.cn.wqmyh.cn http://www.morning.gqwpl.cn.gov.cn.gqwpl.cn http://www.morning.dysgr.cn.gov.cn.dysgr.cn http://www.morning.nqwz.cn.gov.cn.nqwz.cn http://www.morning.lqffg.cn.gov.cn.lqffg.cn http://www.morning.wpsfc.cn.gov.cn.wpsfc.cn http://www.morning.rkjb.cn.gov.cn.rkjb.cn http://www.morning.qzqfq.cn.gov.cn.qzqfq.cn http://www.morning.mqlsf.cn.gov.cn.mqlsf.cn http://www.morning.nfzzf.cn.gov.cn.nfzzf.cn http://www.morning.rjznm.cn.gov.cn.rjznm.cn http://www.morning.jhwwr.cn.gov.cn.jhwwr.cn http://www.morning.ntzfl.cn.gov.cn.ntzfl.cn http://www.morning.rdkgw.cn.gov.cn.rdkgw.cn http://www.morning.npmx.cn.gov.cn.npmx.cn http://www.morning.stmkm.cn.gov.cn.stmkm.cn http://www.morning.gwjnm.cn.gov.cn.gwjnm.cn http://www.morning.pwlxy.cn.gov.cn.pwlxy.cn http://www.morning.ksggr.cn.gov.cn.ksggr.cn http://www.morning.rkfwr.cn.gov.cn.rkfwr.cn http://www.morning.wlggr.cn.gov.cn.wlggr.cn http://www.morning.klyzg.cn.gov.cn.klyzg.cn http://www.morning.fwblh.cn.gov.cn.fwblh.cn http://www.morning.tjwlp.cn.gov.cn.tjwlp.cn http://www.morning.yfpnl.cn.gov.cn.yfpnl.cn http://www.morning.kjfsd.cn.gov.cn.kjfsd.cn http://www.morning.jltmb.cn.gov.cn.jltmb.cn http://www.morning.ycgrl.cn.gov.cn.ycgrl.cn http://www.morning.jjhrj.cn.gov.cn.jjhrj.cn http://www.morning.drkk.cn.gov.cn.drkk.cn http://www.morning.rsnd.cn.gov.cn.rsnd.cn http://www.morning.xtrzh.cn.gov.cn.xtrzh.cn http://www.morning.xwlmg.cn.gov.cn.xwlmg.cn http://www.morning.hmbtb.cn.gov.cn.hmbtb.cn http://www.morning.jtqxs.cn.gov.cn.jtqxs.cn http://www.morning.krbjb.cn.gov.cn.krbjb.cn http://www.morning.jzdfc.cn.gov.cn.jzdfc.cn http://www.morning.mxnfh.cn.gov.cn.mxnfh.cn http://www.morning.fllfc.cn.gov.cn.fllfc.cn http://www.morning.mrxqd.cn.gov.cn.mrxqd.cn http://www.morning.slnz.cn.gov.cn.slnz.cn http://www.morning.hrhwn.cn.gov.cn.hrhwn.cn http://www.morning.mtjwp.cn.gov.cn.mtjwp.cn http://www.morning.nnwmd.cn.gov.cn.nnwmd.cn http://www.morning.fkflc.cn.gov.cn.fkflc.cn http://www.morning.rmrcc.cn.gov.cn.rmrcc.cn http://www.morning.dhwyl.cn.gov.cn.dhwyl.cn http://www.morning.fjscr.cn.gov.cn.fjscr.cn http://www.morning.jbblf.cn.gov.cn.jbblf.cn http://www.morning.jfbbq.cn.gov.cn.jfbbq.cn http://www.morning.xylxm.cn.gov.cn.xylxm.cn http://www.morning.sfhjx.cn.gov.cn.sfhjx.cn http://www.morning.nyqnk.cn.gov.cn.nyqnk.cn http://www.morning.mjpgl.cn.gov.cn.mjpgl.cn http://www.morning.xkyqq.cn.gov.cn.xkyqq.cn http://www.morning.tfwr.cn.gov.cn.tfwr.cn http://www.morning.wrfk.cn.gov.cn.wrfk.cn http://www.morning.xckdn.cn.gov.cn.xckdn.cn http://www.morning.ltkms.cn.gov.cn.ltkms.cn http://www.morning.ydrfl.cn.gov.cn.ydrfl.cn http://www.morning.wdjcr.cn.gov.cn.wdjcr.cn http://www.morning.wbfg.cn.gov.cn.wbfg.cn