java三目
1. java三目运算符问题
1、三目运算符 (表达式1)?(表达式2):(表达式3),计算方法是这样的:表达式1是一个逻辑表达式,如果其值为true,则整个表达式的值为表达式2的值,否则为表达式3的值
2、例子:int i = (5 > 3) ? (5 + 3) : (5 - 3);结果为i = 8.因为5 > 3为true,所以i = 5 + 3.
3、根据三目运算符的从右到左的结合性,我是这样划分的
year > a.year ? 1 : (year < a.year ? -1 : (month > a.month ? 1 : (month < a.month ? -1 : (day > a.day ? 1 : (day < a.day ? -1 : 0)))));
所以应该从最右边的那个表达式开始计算,结果应该是1、0、-1中的一个值。
以上纯属个人理解。没搞清楚你这个算法到底是什么意义。。。。还有你的compare()方法不能声明为静态。
2. Java 三目运算符 表达式内为什么不能进行强制转换
java三目运算符的形式如下:
条件语句?表达式1:表达式2
当条件语句判断是真(true)时,就执行表达式1,否者就执行表达式2注意 表达式1和表达式2 ,是独立的,不要用1个强制转换, 来转换2个表达式
每个表达式都要独立的强制转换.
如果想要强制转换2个表达式, 那么需要在结果前进行转换
按照你的意图.进行修改如下
条件是: n1>9
表达式1是:(char)(n1-10+'A')
表达式2是:(char)n1
所以,拼接在一起就是
n1>9?(char)(n1-10+'A'):(char)n1
修改后的输出语句如下
System.out.println("低四位:"+(n1>9?(char)(n1-10+'A'):(char)n1));//结果输出了E
上面的做法就比较繁琐,因为我们要的是转换结果,而不是转换每一个表达式,
所以可以做下面的优化
(char)(n1>9?(n1-10+'A'):n1)
修改后的输出语句如下
System.out.println("低四位:"+(char)(n1>9?(n1-10+'A'):n1));
3. java 四个点是什么特殊运算符
Java双冒号(::)
该运算符在Java 8中被用作方法引用(method reference),方法引用是与lambda表达式相关的一个重要特性。它提供了一种不执行方法的方法。为此,方法引用需要由兼容的函数接口组成的目标类型上下文。
大致意思是,使用lambda表达式会创建匿名方法, 但有时候需要使用一个lambda表达式只调用一个已经存在的方法(不做其它), 所以这才有了方法引用!
以下是Java 8中方法引用的一些语法:
静态方法引用(static method)语法:classname::methodname 例如:Person::getAge
对象的实例方法引用语法:instancename::methodname 例如:System.out::println
对象的超类方法引用语法: super::methodname
类构造器引用语法: classname::new 例如:ArrayList::new
数组构造器引用语法: typename[]::new 例如: String[]:new
4. Java三目运算符
这个问题主要考察的应该不是三目运算符,而是java运算的自动转换。
i为int类型
x为char类型
第一行计算x和0,此时0可以被看作是char类型,所以x并没有被转换,而是直接输出B
第二行计算x和1111111110,而1111111110是无法保存为char类型的,只能当作int,所以此时x需要被强转成int之后再进行运算,char类型的x在强转成int之后就变成了他的asc码。也就是66。
第三行,计算x和i,i是int类型,所以与第二行同理,x被自动转换成int,结果为66。
如果问题解决,请采纳本答案
5. java三目运算符嵌套怎么用
红色框框 部分是 解释 三目运算 嵌套
下面是 代码
public static void showThreeAlgorithm(){ //三目运算符
/*三目运算相当于
if(i>j){
100;
} else{
200;
}*/
int i = 46;
int j = 97;
int z = i>j?i:j;
int y = i<j?i:j;
System.out.println("i>j?i:j的 值 : "+z);
System.out.println("i<j?i:j的 值 : "+y);
//用三元运算求出判断两个值是否相等,不相等 输出较大的值
int s = i==j?0:i>j?i:j;
// i等于j 则s = 0
// 否则判断 i 是否大于 j 大于 则 s = i 小于 则 s = j
System.out.println("输出S的值: "+s);
}
6. java三目运算符
三目运算符a
>
b
?
a
:
b运算规则是:如果?前面的等式为true,即a>b,则执行返回a,否则返回b;
先判断变量year是否大于对象a的year值,如果大于就返回1,小于就继续判断year是否小于对象a的year值,如果小于就返回-1;此后就是year==a.year的情况,依次判断月份和日
7. java中三目运算符
先学java的叫它,三元运算符;先学c的叫它三目运算符
即( ?: )
如名字表示的三元运算符需要三个操作数。
语法为:条件表达式?表达式1:表达式2。
说明:问号前面的位置是判断的条件,判断结果为bool型,为true时调用表达式1,为false时调用表达式2。
其逻辑为:“如果为真执行第一个,否则执行第二个。”
8. 在Java 里什么时候使用三目运算比较好
在需要进行判断的时候使用三目运算比较好,可以替换if--else
三目运算符,又称条件运算符。条件表达式b ? x : y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。
例如:
//判断一个数的正负
publicStringjudge(inta){
/*if(a>0){
return"a是正数";
}else{
return"a是负数";
}*/
//三目运算符
Stringc=a>0?"a是正数":"a是负数";
returnc;
}
此例子里面三目运算符与if--else效果是一样的。
9. 在JAVA中,什么是单目/双目/三目运算符
所谓单目运算符就是只有需要一个操作数的运算符,如:--、++同理,双目运算符就是需要两个操作数的运算符,如:+、-、*、/、=
等。三目运算符只有一个
?
:
。(需要三个操作数)
10. java 三目运算符
其实这主要是JAVA重载和基本数据类型自动转型造成的。
JAVA重载:这里主要调用了println(char x) 和println(int x) 两个方法。
基本数据类型自动转型原则中有一条:有多种类型混合运算时,系统将所有类型转换为大的,然后再进行计算。
自动转型顺序:
byte->short(char)->int->long->float->double.
还有0~65535可以认为是int也可以是char。
System.out.println(true?x:0);此处0被认为是char,所以输出b,倘若把0改为65536,则输出66.
同理
System.out.println(true?x:1111111110);此处1111111110已经大于了65535,所以x被自动转型为int再输出,输出66.
System.out.println(false?i:x);也是同理,将x转换为int,输出 66.
其实我讲得也不是非常详细,有兴趣可以仔细看下重载和基本数据类型转型的章节,希望能帮到你。