java编程基础

来源:互联网 发布:cf修复软件 编辑:程序博客网 时间:2024/05/21 07:50

一、java中的标识符怎么命名?可以用中文吗?
命名规则:
1.由中英文字母、数字、下划线和美元符号组成,不能以数字开头;
2.区分大小写;
3.不能与java关键字同名;
4.长度没有限制。
支持中文但不建议用中文命名。

二、java中有哪些关键字?
请查看java关键字表。

三、private、default、protected、public修饰符有什么区别?
private:本类中可以访问;
default:本包中可以访问;
protected:本包及其子类中可以访问;
public:任意位置都可以访问。

四、this关键字有什么含义?怎么用?
this代表当前类的一个实例,使用this可以调用当前类中的方法、属性和构造方法。
有三种常用场景:
1.返回调用当前方法的对象的引用;
2.在构造方法中调用当前类的其他构造方法;
3.当方法参数名和成员变量名相同时,用于区分参数名和成员变量名。

五、super关键字有什么含义?怎么用?
super代表父类的一个实例,在子类中使用super可以调用父类的方法、属性和构造方法。
有两种常用场景:
1.调用父类中的构造方法;
2.调用父类中的方法和属性。

六、static关键字有什么含义?如何应用?能修饰构造方法吗?
static可以修饰方法、属性、代码块和内部类,使用static修饰时可以理解成这些成员与类相关,通过“类名.成员”的形式调用;没有static修饰可以理解成这些成员与对象相关,通过“对象名.成员”的形式调用。
注意:static不能修饰构造方法。

七、final关键字有什么含义?如何应用?
final可以修饰类、成员变量和方法,final修饰的类不可以被继承,方法不能被重写,变量不可以二次赋值。

八、instanceOf有什么含义?如何应用?
instanceOf用于判断某个对象是否为某个类或接口的类型,多态时常用。

九、java中有哪些数据类型?
java中数据类型分为简单数据类型和引用数据类型。
简单数据类型:
数值型:byte(8位)->short(16位)->int(32位)->long(64位)->float(32位)->double(64位)

字符型: char(16位)

布尔型:boolean(没有明确规定)

引用数据类型:类、接口、数组。

十、如何解决float和double运算时精度不准的问题?
使用BigDecimal进行运算。

十一、int和Integer有什么区别?
int是基本数据类型,Integer是引用数据类型。java为每一种基本数据类型都提供了包装类。

十二、float f=3.2是否正确?
不正确,浮点型默认为double类型,需要在数值后面加”f”或进行强制转换。
java中基本数据类型除了boolean类型外其他的数据类型都可以相互转换,但是范围大的向范围小的转换需要进行强制转换。
说到类型转换,必须提一下表达式类型提升规则:
1.表达式中有一个是double,类型结果为double。
2.表达式中有一个是float,类型结果为float。
3.表达式中有一个是long,类型结果为long。
4.其它均为int类型。
说明:结果匹配规则从1到4。

十三、成员变量和局部变量有什么区别?
1.private、protected、public、static这些修饰符都可以修饰成员变量,但是不能修饰局部变量,final两者都可以修饰。
2.成员变量存储在堆内存中,局部变量存储在栈内存中。
3.作用域不同,成员变量在类中有效,局部变量只在方法体中有效。
4.成员变量可以默认初始化,局部变量必须显式初始化。

十四、值传递和引用传递有什么区别?
java中只有值传递,如果方法参数是引用数据类型,传递的只是引用的地址值,就算对引用重新赋值也不会改变原有引用的地址。

十五、java中有哪些运算符?优先级如何?
算术运算符、关系运算符、逻辑运算符、位运算符、其他运算符。
注意:java中运算符是不允许重载的。

十六、x+=y和x=x+y两种方式有区别吗?
x+=y等价于x=x+y和强制类型转换两个操作。
注意:+=、-=、*=和/=使用情况类似。

十七、运算时&和&&有什么区别?
&是逻辑与,&&是短路与。

十八、x++和++x有什么区别?
x++和++x作为一条独立语句时没有什么区别,但是作为表达式的一部分时有差别。
举例:int a=10;
int b=10;
int c=10+(a++);//输出20,先用后加
int d=10+(++b);//输出21,先加后用

十九、x?y:z有什么需要注意的地方?
y和z表达式的值必须是相同的数据类型。

二十、“+”是如何实现字符串连接的?
a+b底层实现是new StringBuilder(String.valueOf(a)).append(b).toString();

二十一、==和equals()有什么区别?
==用于判断两个简单变量的值是否相等,或两个引用变量的引用地址是否相等。
equals()用于判断引用变量引用地址指向的存储内容是否相等。
注意:Object中的equals()就是用==实现的,因此自定义类型最好重写equals()方法。

二十二、String s=new String(“abc”)和String s=”abc”有什么区别?
第一种方式总是会重新创建一个新的字符串对象,第二种方式首先会从字符串缓冲池中找,如果有直接指向该字符串,如果没有则创建一个字符串对象放到缓冲池中再将引用指向该字符串。

二十三、break和continue有什么区别?
break是结束其所在的switch语句或循环语句的执行。continue是终止本次循环,进入下一次循环。

二十四、switch(变量)中的变量包含哪些类型?
1.6以前,支持byte、short、char、int类型,1.7开始支持String类型。

二十五、数组如何定义和初始化?
1.数组定义
int a[];
int[] a;
2.数组初始化
1》静态初始化:定义时同时指定数组元素内容。
int[] a={1,2,3,4};
静态初始化时,不需要指定数组大小,系统会自动分配大小。

2》动态初始化:定义时先通过new开辟指定大小的存储空间,然后再为存储单元指定内容。
int[] a=new int[3];
a[0]=1;
a[1]=2;
a[2]=3;
动态初始化多维数组时,不必指定每一维的大小,而只需要指定最左边一维的大小,如果指定了某一维的大小,那么它左边的各维大小都需要指定。
3.初始化分类和常见错误
1》定义同时初始化
char[] c1=new char[4];
char[] c2={‘a’,’b’};
char[] c3=new char[]{‘a’,’b’,’c’};
2》先定义后初始化
char[] c1;
c1=new char[4];
c1=new char[]{‘a’,’b’};
3》常见错误
char[] c1=new char[4]{‘a’,’b’,’c’,’d’};//错误
char[] c1;c1={‘a’,’b’};//错误

二十六、如何实现数组的遍历?
普通for循环和foreach循环。

二十七、如何实现数组的复制?
System类有一个静态方法arraycopy(),能够直接实现数组复制。
数组扩容可以通过Arrays.copyOf()实现。

二十八、数组排序方法有哪些?
选择排序、插入排序、冒泡排序、快速排序

0 0
原创粉丝点击