选择结构、循环结构、大数据java基础面试题
switch:
注意:
byte short int char String(jdk1.7支持)
不能是 long float double boolean
while、do-while、for同c#
面试题:
大数乘法:随机给定两个超大整数,计算乘积。
思路:AB*CD = AC(BC+AD)BD
public static void main(String[]arg) { String i1="111111111111111"; String i2="222222222222222"; // String i1="52"; // String i2="63"; char[] a1=i1.toCharArray(); char[] a2=i2.toCharArray(); int [] n1=new int[a1.length]; int [] n2=new int[a2.length]; int [] n=new int[a1.length+a2.length]; for(int i=0;i<a1.length;i++) { n1[i]=a1[i]-(int)('0'); } for(int i=0;i<a2.length;i++) { n2[i]=a2[i]-(int)('0'); } // for(int i=0;i<a1.length;i++)//正着来加,要留一位,防止进位 // { // for (int j=0;j<a2.length;j++) // { // n[i+j+1]+=n1[i]*n2[j];//? n[i+j]+=n1[i]*n2[j]会在后面多个0 // } // } for (int j=a2.length;j>0;j--)//反着来加 { for(int i=a1.length;i>0;i--) { n[i+j-1]+=n1[i-1]*n2[j-1];//? n[i+j]+=n1[i]*n2[j]会在后面多个0 } } //满十进位,从后往前 for(int i=n.length-1;i>0;i--) { n[i-1]+=n[i]/10; n[i]=n[i]%10; } String str=""; for(int i=0;i<n.length;i++)//i从0开始,预留做进位 { str+=""+n[i]; } System.out.println(str); }
十进制转二进制利用无符号右移和1&运算巧妙实现:
public static void main(String[ ] args) { Scanner sc=new Scanner(System.in); System.out.println("输入一个数"); int n=sc.nextInt(); for(int i = 31;i >= 0; i--) { //倒着从0开始写,移动32次,>>>在前面补0,&1只有最后一位是1,所以做到了每次只比较一位数 System.out.print(n >>> i & 1); } }