你必须知道的261个Java语言问题笔记- Java编程基础1

来源:互联网 发布:免费企业内部通讯软件 编辑:程序博客网 时间:2024/05/19 14:00
Java中的标识符如何命令?可以用中文吗?
Java程序中的变量名、类名和方法名都属于标识符。
Java标识符在定义时需要遵循以下几点规则:
可以由中英文字母、下划线"_"、"$"符和数字字符构成,但不能以数字开头。
注意Java是大小写敏感的,标识符也不例外。
注意避开Java语言中的默认的关键字。
标识符没有长度限制。

定义标识符时除了必须遵守上述规则以外,通常还有一些编码习惯。
类名:每个单词首字母大写,其他小写;
接口:每个单词首字母大写,其他小写;
方法:以小写字母开头,如果方法名由多个单词组成,则从第二个单词开始首字母大写。
变量:以小写字母开头,如果变量名由多个单词组成,则从第二个单词开始首字母大写。
常量:常量名全部大写,各单词间以"_"连接。
包名:全部小写。

Java中有哪些关键字
关键字是Java程序中具有特殊含义的字符,不能在程序中当作标识符使用。
Java常用关键字:
abstract|assert|boolean|break|byte|continue|case|catch|char|class|const|double|
default|do|extends|else|final|float|for|goto|long|if|implements|import|
native|new|null|instanceof|int|interface|package|private|protected|public|return|short|
static|strictfp|super|switch|synchronized|this|while|void|throw|throws|transient|try|

用public、protected和private修饰方法有什么区别
public-类内部|同一包中|子类中|其他
protected-类内部|同一包中|子类中|其他
default-类内部|同一包中
private-类内部

this关键字有什么含义?在哪些情况下应用?
Java中为了解决变量的命名冲突和不确定性问题,引入了关键字this。
this代表当前类的一个实例,它经常出现在方法和构造方法中,具体使用情况有以下3种:
返回调用当前方法的对象的引用;
在构造方法中调用当前类中的其他构造方法;
当方法参数名和成员变量名相同时,用于区分参数名和成员变量名。
1.返回调用当前方法的对象的引用;
2.在构造方法中调用当前类中的其他构造方法;
注意:在使用this调用其他构造方法时,必须放在构造方法的开始处,否则编译不通过。
3.当方法参数名和成员变量名相同时,用于区分参数名和成员变量名。

super关键字有什么含义?在哪些情况下应用?
在Java中,this代指当前类的实例,使用this可以调用当前类中的方法、属性和构造方法。
而super代表父类的实例,在子类中,使用super可以调用其父类的方法、属性和构造方法。
super的具体使用情况有以下2种:
调用父类中的构造方法;
调用父类中的方法和属性;
1.调用父类中的构造方法;
注意:如果父类中没有对应的构造方法,将会产生编译错误。
2.调用父类中的方法和属性;

static关键字有什么含义?具体如何应用?能修饰构造方法吗?
static关键字可以修饰方法、属性、自由块和内部类,使用static修饰这些成员时,可以理解成这些
成员与类相关,通过"类名.成员"的形式调用:没有static修饰可以理解成这些成员与对象相关,需要
通过"对象名.成员"的形式调用。
注意:static关键字不能用于修饰构造方法。
1,static修饰方法
main()是Java应用程序的主入口方法,在该方法前添加static修饰表示该方法是与类相关的,Java解析
器运行时将会寻找该方法。之所以将main()方法定义为类相关,原因是在解析器调用该方法时,还没
有来得及创建当前类对象,因此不能定义成与对象相关的方法。
注:在static修饰的方法中,不能调用没有static修饰的方法和属性,也不能使用this和super关键字。
2.static修饰属性
当static修饰属性时,除属性调用方式与修饰方法类似外,静态属性还具有一个特性,那就是该属性
被多个当前类对象共享,一个对象修改静态属性值后,会影响其他对象。
3.static修饰自由块
自由块是Java类中使用{}括起来的代码段,自由块中的代码在构造方法之前执行,因此可以将一部分
初始化代码放在自由块中。
当使用static修饰自由块时,自由块将变成静态自由块,通常用于初始化静态变量。静态自由块与类
相关,因此只要类被加载,即使没有创建对象,也将被执行。此外静态自由块无论创建几个对象,仅
执行一次。

final关键字有什么含义?具体如何应用?
final关键字可以在类、成员变量和方法前面修饰。
1.final修饰类时,表示该类不能再被其他类继承,例如String和Math。如果不希望自己定义的类被
继承,可以将类使用final修饰。
2.final修饰成员变量
final修饰成员变量时,表示该变量是一个常量。
如果final修饰的是一个简单类型的变量,那么变量值一旦被初始化,将不能修改。
如果final修饰的是一个引用类型的变量,那么该变量的引用不可以改变,但可以通过该引用修改对
象的属性值。
3.final修饰方法
final修饰方法时,表示该方法不可以在子类中重写(覆盖)。

instanceof关键字有什么含义?如何应用?
instanceof关键字属于Java中的一个二元操作符,和"=="、">"等操作符用法相似,其作用是判断某
对象是否为某个类或接口类型。由于Java语言的多态性使得可以用一个子类的实例赋值给一个父类的变量,但是在一些情况下需要判断
变量的原有类型,此时可以使用instanceof操作符实现。
当instanceof左操作数是右操作数指定的类型或者子类类型时返回true,反之则返回false.

Java中有哪些数据类型
Java语言的数据类型分为两种,一种是简单数据类型,另一种是引用数据类型。
简单数据类型都有着固定的长度。
Java简单数据类型的取值范围:
数据类型-有效范围(bit)
boolean:1
byte:8
char:16
short:16
int:32
long:64
float:32
double:64
char类型为两个字节,采用Unicode编码,因此,无论是简单的字母还是汉字,在Java中都是占用两个
字节。
引用数据类型的大小统一为4字节,记录的是其引用对象的地址。
数据类型:
简单数据类型:
数值型:整数类型(byte,short,int,long)|浮点类型(float,double)
字符型:char
布尔型:boolean
引用数据类型:类class|接口interface|数组

Java属于强类型语言,Java类型主要分为简单类型和引用类型。
简单类型变量直接存储变量值,而引用类型变量存储的却是地址,这使得变量之间相互赋值时有很大
的区别。

如何解决double和float精度不准的问题
1.double或float的精度问题
double和float本身确实存在某种缺陷,不能用于精确运算。
2.解决方法
在《Effective Java》一书中提到了一个原则,那就是float和double只能用来科学计算或者是工程
计算,但在商业计算中我们要用java.math.BigDecimal。通过使用BigDecimal类可以解决上述问题。
虽然BigDecimal类的构造方法很多,但是我们只使用了带String类型参数的构造方法。
1)BigDecimal(double val)构造方法的结果有一定的不可预知性。
2)String类型参数的构造方法是完全可预知的:写入new BigDecimal("0.1")将创建一个BigDecimal,
它正好等于预期的0.1。
因此,比较而言,通常建议优先使用String类型参数的构造方法
3)当double必须用作BigDecimal的源时,请注意,此构造方法提供了一个准确转换,它不提供与以下
操作相同的结果。
先使用Double.toString(double)方法,然后使用BigDecimal(String)构造方法,将double转换为
String。要获取该结果,请使用static valueOf(double)方法。

int和Integer都可以作为整数类型,那么他们有什么区别
Java保留了int、short、long、byte、float、double、char、boolean等8个基本数据类型。
基本类型不具备面向对象的基本特征,没有属性和方法。
基本类型|封装类型
byte|Byte
short|Short
int|Integer
long|Long
boolean|Boolean
float|Float
double|Double
char|Character
封装类都提供了valueOf(String s)方法,可以完成字符串到封装类之间的转化;
toString()方法可以将封装类转化为字符串;
封装类属于引用类型,具有引用类型的特点。

float f = 3.4语句是否正确
1.类型转换
Java中的类型可分为基本类型和引用类型,不同类型之间的变量赋值时,首先需要先进行类型转换,
然后再进行赋值。
Java类型转换可分为自动转换和强制转换两种。
基本类型之间相互转换,实现自动转换需要满足以下基本条件。
转换双方的类型必须兼容,例如int和long兼容,int和boolean不兼容。
目标类型比源类型的范围要大,例如long类型分配内存大小8字节,int类型是4字节,
因此long类型的范围比int类型大。
2.数值常量的默认类型
整型常量默认认为int类型,为其分配4字节大小的空间。
long类型的常量,可以在后面加"l"或"L"。
浮点型常量默认为double型
声明一个常量为float型,需要在数字后面加"f"或"F".
3.float f = 3.4语句错误解析
double类型转换为float类型是不能自动转换的,需要强制转换。
数值常量在内存分配时会有其默认的大小空间。

成员变量和局部变量有什么区别
变量可分为局部变量和成员变量(即属性)两种。
1.局部变量
局部变量一般是指在方法内部定义的变量,其作用域是在方法块内部有效。局部变量在使用时,必须
先初始化然后才能使用,否则程序将不能顺利通过编译。
2.成员变量
成员变量是指在类中定义的变量,也就是指属性,其作用域是在整个类中有效。
成员变量在定义时可以不指定初始值,系统可以按默认原则初始化。
成员变量类型|默认初始值
Byte|0
Short|0
Int|0
Long|0L
Boolean|false
Float|0.0f
Double|0.0d
Char|'\u0000'
其他类型(即引用类型)|null
注意:被final修饰并且没有被static修饰的成员变量必须显式赋初始值。
3.成员变量和局部变量的区别
成员变量和局部变量的区别主要有以下几个方面:
public、protext、private、static等修饰符可用于修饰成员变量,但不能修饰局部变量。
两者都可以使用final修饰。
成员变量存储在堆内存中,局部变量存储在栈内存中;
作用域不同,成员变量在整个类中有效,局部变量在方法体中有效,在方法体之外不可见。
成员变量可以默认初始化,局部变量必须显示初始化。

变量之间传值时可分为值传递和引用传递,那么他们有何区别
Java根据变量的类型不同可分为简单类型变量和引用类型变量。
这两种类型的变量主要有以下几点不同:
1.存储机制
简单类型变量是直接在栈内存中开辟存储空间存储变量值。
引用类型变量是由引用空间和存储空间两部分构成,引用空间在栈内存中,存储空间在堆内存中,
存储空间负责存储变量值,引用空间负责存放存储空间的首地址。引用变量中存放的是地址值,通过
地址值可以定义存储位置并修改存储信息。
2.变量传递
当变量与变量之间赋值时,引用类型变量和简单变量都属于值传递,不同的是简单变量传递的是内容
本身,而引用变量传递的却是引用地址。

Java中有哪些运算符?优先级如何?
Java中的运算符主要可以分为5大类:
算术运算符|加+减-乘*除/取模%递加++递减--
关系运算符|大于>大于等于=>小于<小于等于<=等于==不等于!=
逻辑运算符|逻辑非!逻辑与&逻辑或|逻辑异或^短路与&&短路或||
位运算符|取反~按位与&按位或|按位异或^右移>>左移<<及无符号右移>>>
其他运算符|赋值运算符=、+=、-=、/=、>>=、<<=、>>>=,条件运算符x?y:z实例运算符instanceof,创建对象运算符new
Java运算符优先级
优先级|运算符
1分隔符|.[](),;
2单目预算符|+-~!++ --
3创建对象和类型转换|new (type)强制转型
4乘法/除法|*/%
5加法/减法|+-
6移位|<< >> >>>
7关系比较|< <= > >= instanceof
8等于/不等于|== !=
9按位与|&
10按位异或|^
11按位或||
12条件与|&&
13条件或|||
14三目运算|?:
15赋值|= += -= *= /= %= != ^= ~= <<= >>= >>>=
阅读全文
0 0
原创粉丝点击