java经典面试题

一、经典面试题目: 一个有小写英文字符组成的字符串,统计其中每个字符数量

String str = "abcdesjkjsadfoiqwejhjkahjsiuhaskhka";
int[] counter = new int[26];
for(int i=0; i

二、自增运算 ++

经典面试题目:

int n = 5;
for(int i = 0; i<5; i++){
    n = n++;
} 
System.out.println(n);//5

解析:

n = 5;
n = n++;
// 规则: ++ 的有限远远高于赋值运算=,++先计算
// 1. 计算++(后++): 
//     1. 先取出n的值5作为 n++ 表达式的值5
//     2. 将n的值增加1, n为6
// 2. 计算赋值 =, 将 n++ 的值5 赋值给n,n改变为5

三、将一个整数按照10进制进行拆分为个位数,如: 726633 拆分为 7、2、6、6、3、3

分析:

n = 726633
l = n%10; //3
n /= 10;  //72663
l = n%10; //3
n /= 10;  //7266
l = n%10; //6
n /= 10;  //726
l = n%10; //6
n /= 10;  //72
l = n%10; //2
n /= 10;  //7
l = n%10; //7
n /= 10;  //0

代码:

int n = 703383;
int[] digi=new int[10];
int i = digi.length-1;
do{
    int l = n%10;
    digi[i--]=l;
    n /= 10;
}while(n!=0);
int[] nums = new int[digi.length-1-i];
System.arraycopy(digi, i+1, nums, 0,  digi.length-1-i); 
System.out.println(Arrays.toString(nums));

结果:
java经典面试题_第1张图片

四、打乱一个数组(洗牌算法)

int[] ary = {1,2,3,4,5,6,7,9};
for(int i=ary.length-1; i>0; i--){
  int j = (int)(Math.random()*i);
  int t = ary[i];
  ary[i] = ary[j];
  ary[j] = t;
}
System.out.println(Arrays.toString(ary));       

你可能感兴趣的:(java基础)