易错点小结-1

自增以及自减的前后位置

有些很无聊的题,会出一些多个自增或者自减的,。
例如

int a = 2 ;
int b = 3 ;
a= ++a+b+++b+++b++;
//问你a,b的值,是不是想问候出题者祖宗。
/**
首先看等号右边,++a+b+++b+++b++
先看怎么断句, ++a + b++ + b++ +b++  
a的自增在前,那么先加一,a为3
再+b++ ,b的自增在后请先忽略自增,+b是加上3,然后b的值此时变成了4
再+b++ ,b的自增在后请先忽略自增,+b是加上4,然后b的值此时变成了5
再+b++ ,b的自增在后请先忽略自增,+b是加上5,然后b的值此时变成了6

*/

总结一下规律,这里自增在前,那么它的优先级就提升,如果自增在值的后面,那么对运算丝毫不起作用,我自定义其优先级就下降,请先忽略自增,先做别的运算,但是自增符号一过,该值就要加一。

类型转化

float f = 5 / 2 ;
//问f的值, f是float ,等号右边又是整型,那么除出来结果是2,然后在类型转化为float,那么f为 2.0F.

问你如何求一个int类型数的长度。

//方法1:
int num = 12345 ; //假设我想知道的数是该数,但是不知道长度。
//短除10,一直除到0,同时每次加一
int index = 0 ;
while(num != 0){
    
    
	num /= 10 ;
	index ++ ;
} 
//方法2
int num = 12345 ; //假设我想知道的数是该数,但是不知道长度。
//利用字符串有长度属性然后用个空串来拼接它,然后.length获取长度
String s = "";//给个空串
s += num ;//利用字符串的拼接
int len = s.lengh();
System.out.println("长度为:" + len);

字符串的拼接

String s = "a";
s += 2 + 5 ;
//问你s 为多少,这个是字符的拼接,s就是a25

逻辑运算符的短路效应

int i  = -124;
if( i > 0 && i++){
    
    
 System.out.println("i");
}
//这里有短路效应,因为 &&前面条件不成立,所以 i++不会执行,i的值是 -124 

去除数组中的0,得到新数组

public class Demo1 {
    
    

	public static void main(String[] args) {
    
    
		// TODO Auto-generated method stub
		/**
		 * 如何将一个数组中的0全部删除,然后赋值给一个新的数组保存没有0的数组
		 
		例如原数组 a = { 1,0,4,8,0,0,5,7,9};
		保存的新数组 b ={ 1,4,8,5,7,9}

		**/
		int [] a = {
    
     1,0,4,8,0,0,5,7,9};
		int [] b = t1(a);
		System.out.println(Arrays.toString(b));
	}
	public static int [] t1(int []a) {
    
    
		int [] b ;
		int len = 0 ; //为a数组没有0的长度
		int index = 0 ; //保存新数组的下标
		for( int i = 0 ; i < a.length ; i++) {
    
    
			if( a[i] != 0) {
    
    
				len ++ ;
			}
		}
		b = new int [len] ;
		for( int j = 0 ; j < a.length ; j++) {
    
    
			if( a[j] != 0) {
    
    
			b[index] = a[j] ;
			index ++ ;
			}
		}
		return b ;
	}

}

猜你喜欢

转载自blog.csdn.net/toomemetoo/article/details/112190015
今日推荐