选择结构、循环结构、大数据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);
} }