与哪些运算符>>兼容 - java

我这里没有什么代码

int b=3;
b=b >> 1;
System.out.println(b);

它可以完美工作,但是当我将变量b更改为byte,short,float,double时,它包含错误,但是对于变量int和long来说,它可以完美工作,为什么它不能与其他变量一起工作?

参考方案

位移位运算符(例如>>)与任何整数类型兼容。但是,对于较小的类型,例如byteshort,该操作将执行加宽转换:结果升为类型int,因此无法将其重新分配回源类型。

因此,以下内容不合法:

byte b = 3;
b = b >> 1;

但是这些分配是合法的:

byte b = 3;
b = (byte)(b >> 1)
int c = b >> 1;

至于为什么这些运算符不能与floatdouble一起使用,我将留给您探讨。提示:请考虑layout of those types in memory以及对移位运算符的含义。

JAVA:如何检查对象数组中的所有对象是否都是子类的对象? - java

我有一个对象数组。现在,我要检查所有这些对象是否都是MyObject的实例。有没有比这更好的选择:boolean check = true; for (Object o : justAList){ if (!(o instanceof MyObject)){ check = false; break; } } java大神给出的解决方案 如果您不喜欢循环,则…

Java 8流:处理空值 - java

以下代码为属性Salary为null抛出NPE。class Person具有以下属性:字符串:name,整数:age,整数:薪金salary在此处可以为null。我想创建一份工资清单。persons.stream().mapToDouble(Person::getSalary).boxed().collect(Collectors.toList())在这里,…

如何使用箭头符号(->)创建受保护的方法? - java

当我们编写以下代码时Stream.of(1,2,3,4,5).filter(i -> (i%2 == 0)).map( i -> i*i ); 表达式i -> (i%2 == 0)或i -> i*i将变为私有方法。在我的用例中,编写了一个junit测试,以确保没有方法是私有的(是的,这是强制性的),并且对于这些lambda表达式而言,…

Java 8根据条件应用流过滤器 - java

在Java 8中,有一种方法可以根据条件将过滤器应用于流,例我有这个流if (isAccessDisplayEnabled) { src = (List < Source > ) sourceMeta.getAllSources.parallelStream() .filter(k - > isAccessDisplayEnabled((S…

通过索引访问地图? - java

是否可以通过索引访问帐户>?我需要获取地图的第二个元素。 java参考方案 您使用了错误的数据结构。如果需要按键查找,请使用Map。如果需要按索引或插入顺序进行查找,请使用可让您进行索引的内容,例如数组或列表或链表。如果需要通过两者进行查找,则需要创建一个跟踪键和插入顺序的复合数据结构(该实现将由Map和上述数据结构之一支持)。框架中甚至内置了一个:L…