扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
1、虽然有很多朋友可能进行了多年的java开发老手,但可能仍旧对某些点缺乏仔细探究。
2、去一些公司求职面试或笔试时的技术题目中,也往往会涉及到这里的一些内容。
所以,希望下边的这些总结能够对一些学习java或求职的朋友有些许帮助。
1、 关于java类中的缺省的构造器
如果一个java类没有显式定义没有参数的构造器,将有一个默认缺省的构造器。如果定义了一个有参数的构造器,那么原来的缺省的构造器将不在有效。
public class A{ } 此时如果用 new A(); java编译器将使用缺省的构造器。 public class A{ public A(int i){ } } |
2、Java中的类名与文件名
1、在一个java文件中可以有多于一个类定义(更常见于某些组件的监听器类),但只能有一个public class定义,且与文件同名。
2、如果一个java源文件中没有public类,那么每个类的名字没特殊规则,即不必与文件同名。
3、在编译后产生的class文件中,仍旧是多个单独分开的class文件。
3、import关键字
1、import语句必须定义在所有的class定义之前。
2、import语句只是为编译器指明了一个路径,并不像C或C++中的#include,所以用import .*并不影响性能
4、Java中的几个特殊关键字
Java中的关键字许多大家都比较熟悉,而有几个就不是很常用,如:
1、goto和const是保留关键字,在java中没使用
2、strictfp和volatile不常用; sizeof、zhen不是关键字。
3、true,false,null不是严格意义上的关键字,而是literals。
5、java方法中的传递值参
在Java方法中传递参数,对于基本类型来讲传递的是值参数,相当于建立的一个参数的拷贝,不影响原来变量的值。
在引用方法中可以改变传递对象的内容,但对象引用(像A@5d87b2)从来不会改变。
public class tt{ public static void main (String args[]){ A aa = new A(); aa.num =5; tt t = new tt(); System.out.println("11 aa="+aa + "num="+aa.num); t.test(aa); System.out.println("22 aa="+aa + "num="+aa.num); } void test(A a){ A ab = new A(); a = ab; System.out.println("33 ab="+ab + "num="+ab.num); } } class A{ int num; } |
6、变量初始化
java中的变量在使用之前必须被初始化,当创建一个对象的时候一些类的变量会自动初始化并赋予缺省值。
数字类赋值0;char类型赋值'\u0000'; boolean类型赋值false;引用对象赋值null;
注意的是在方法之外的类变量的值是自动赋初始值,而方法内的局部变量必须手工初始化。
class AA{ int num; void test(){ int j; j =5;//没有这一行则编译不会通过。 j = j+num; } } |
这个点经常在求职笔试题目中出现。default放在最上边编译没问题;碰到符合分支的,如果没有break会一直向下运行。
public class tt{ public static void main (String args[]){ tt t = new tt(); t.test(2);//可改变成3运行一下看一下结果 } void test(int i){ switch (i){ default: System.out.println("default"); case 1: System.out.println("111"); break; case 2: System.out.println("222"); break; } } } |
8、关于java中的label使用
? break [label] ? continue[lbele] ? lable: statement; //这里的statement必须是一个loop循环 public class tt{ public static void main (String args[]){ tt t = new tt(); t.test(); } void test(){ System.out.println("0000"); lb1:for (int i=0;i<10;i++){ lb2:for (int j=0; j<2; j++){ if (i==2) continue lb1; System.out.println("i="+i +" j="+j); } } System.out.println("111111"); } } 9、类型转换校正 class Employee | class Manager |
向上校正,总是允许的,Manager直接使用父类Employee的方法。
向下校正,必须用instanceof检验,才能将一个Employee转换为Manager对象。
public void test(Employee e){ if (e instanceof Manager){ Manager m = (Mnager)e; ... } } |
方法重载(overloading)一定要求名字相同,参数不同,返回类型可以相同也可以不同
class A{ void test(int i){ } } class AA extends A{ int test(int i, int j){ return 5; } } |
class A{ void test(int i){ } } class AA extends A{ public void test(int i){//若是换成private则编译不通过。 } } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者