注意:
这是编译可以通过的,会打印出true;
public static void main()
{
int x=0;
if(x=1)
{
System.out.print(x);
}
}
注意:这是编译不通过的
为什么会这样?
JAVA的赋值运算是有返回值的,赋了什么值,就返回什么值
例一:public static void main(){boolean x=false;if(x=true){System.out.print(x);}}注意:这是编译可以通过的,会打印出true;例二:public static void main(){int x=0;if(x=1){System.out.print(x);}
${user.My-Name}应当改为${user["My-Name"] }
如果要动态取值时,就可以用[]来做,而.无法做到动态取值。例如:
${sessionScope.user[data]}
中
data 是一个变量
EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围
中
名称为
username的变量。
因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、
Application范围查找。
假如途
中
找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,
就回传null。
属性范围在EL
中
的名称
Page PageScope
Request RequestScope
Session SessionScope
Application ApplicationScope
4) 1--EL
表达式
用${}表示,可用在所有的HTML和JSP标签
中
作用是代替JSP页面
中
复杂的
JAVA
代码.
2--EL
表达式
可操作常量 变量 和隐式对象. 最常用的
隐式对象有${param}和${paramValues}.
${param}表示返回请求参数
中
单个字符串的值. ${paramValues}表示返回请求参数的一组
值.pageScope表示页面范围的变量.requestScope表示请求对象的变量.
sessionScope表示会话
范围内的变量.applicationScope表示应用范围的变量.
表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁
止.JSP2.0
中
默认的启用EL语言.
4-- EL语言可显示 逻辑
表达式
如${true and false}结果是false
关系
表达式
如${5>6} 结
果是false 算术
表达式
如 ${5+5} 结果是10
5--EL
中
的变量搜
1.
Java
基础部分
基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法,虚拟机方面的语法。
1、一个".
java
"源文件
中
是否可以包括多个类(不是内部类)?有什么限制?
可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。
2、
Java
有没有goto?
java
中
的保留字,现在没有在
java
中
使用。
3、说说&和&&的区别。
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的
表达式
的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
&&还具有短路的功能,即如果第一个
表达式
为false,则不再计算第二个
表达式
,例如,对于if(str != null && !str.equals(“”))
表达式
,当str为null时,后面的
表达式
不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。If(x==33 & ++y>0) y会增长,If(x==33 && ++y>0)不会增长
&还可以用作位运算符,当&操作符两边的
表达式
不是
boolean
类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。
备注:这道题先说两者的共同点,再说出&&和&的特殊之处,并列举一些经典的例子来表明自己理解透彻深入、实际经验丰富。
4、在
JAVA
中
如何跳出当前的多重嵌套循环?
在
Java
中
,要想跳出多重循环,可以在外面的循环
语句
前定义一个标号,然后在里层循环体的代码
中
使用带有标号的break
语句
,即可跳出外层循环。例如,
for(int i=0;i<10;i++) {
for(int j=0;j<10;j++) {
System.out.println(“i=” + i + “,j=” + j);
if(j == 5) break ok;
另外,我个人通常并不使用标号这种方式,而是让外层的循环条件
表达式
的结果可以受到里层循环体代码的控制,例如,要在二维数组
中
查找到某个数字。
int arr[][] = {{1,2,3},{4,5,6,7},{9}};
boolean
found = false;
for(int i=0;i<arr.length && !found;i++) {
for(int j=0;j<arr[i].length;j++){
System.out.println(“i=” + i + “,j=” + j);
if(arr[i][j] == 5) {
found = true;
break;
5、switch
语句
能否作用在byte上,能否作用在long上,能否作用在String上?
在switch(expr1)
中
,expr1只能是一个整数
表达式
或者枚举常量(更大字体),整数
表达式
可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long类型不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它不能作用于swtich
语句
中
,String类型在JDK7之前不可以,而在JDK7之后可以。
6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升
表达式
的类型,所以结果是int型,再
赋值
给short类型s1时,编译器将报告需要强制转换类型的错误。
对于short s1 = 1; s1 += 1;由于 += 是
java
语言规定的运算符,
java
编译器会对它进行特殊处理,因此可以正确编译。
7、char型变量
中
能不能存贮一个
中
文汉字?为什么?
char型变量是用来存储Unicode编码的字符的,unicode编码字符集
中
包含了汉字,所以,char型变量
中
当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在unicode编码字符集
中
,那么,这个char型变量
中
就不能存储这个特殊汉字。补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。
备注:后面一部分回答虽然不是在正面回答题目,但是,为了展现自己的学识和表现自己对问题理解的透彻深入,可以回答一些相关的知识,做到知无不言,言无不尽。
表达式
语句
不是
赋值
或调用是指
表达式
语句
不仅不包含
赋值
语句
也不包含函数调用。
表达式
语句
通常是对某个值进行求值并返回结果,但是并不会将结果保存到变量
中
或者将其作为函数的参数。
举个例子,以下是几个
表达式
语句
的例子:
1. `2 + 3`:这是一个简单的加法
表达式
,它会求出 2 加 3 的结果 5。
2. `a > b`:这是一个比较
表达式
,它会比较变量 a 和 b 的大小,如果 a 大于 b 就返回 true,否则返回 false。
3. `foo()`:这是一个函数调用
表达式
,它会调用名为 foo 的函数并返回函数的返回值。
上述的三个
表达式
都是
表达式
语句
,但都不是
赋值
或调用
语句
。
赋值
语句
是指将值赋给变量的
语句
,例如 `x = 2 + 3`,而调用
语句
是指调用函数并使用函数的返回值,例如 `result = foo()`。