整型:byte,short,int,long
浮点型:float,double
布尔型:boolean
字符型:char
publicstaticintbinarySearch(int[]a,intkey){
intleft=0;
intright=a.length-1;
while(left=right){
intmid=left+((right-left)1);
if(a[mid]key){
right=mid-1;
}
elseif(a[mid]key){
left=mid+1;
}
else{
returnmid;
}
}
return-1;
}
数组颠倒数组中元素顺序
//注意n值、for循环边界、以及循环体内n-1-i
intn=a.length;
for(inti=0;in/2;i++){
inttemp=a[i];
a[i]=a[n-1-i];
a[i-1-i]=temp;
}
矩阵相乘
//假设a[n][n],b[n][n],c[n][n]
intn=a.length;
for(inti=0;in;i++){
for(intj=0;jn;j++){
for(intk=0;kn;k++){
c[i][j]+=a[i][k]*b[k][j];
}
}
}
静态方法判断一个数是否为素数
一个数若可以进行因数分解,那么分解时得到的两个数一定是一个小于等于sqrt(n),一个大于等于sqrt(n),据此,代码中不需要遍历到n-1,遍历到sqrt(n)即可,因为若sqrt(n)左侧找不到约数,那么右侧也一定找不到约数。
publicstaticbooleanisPrime(intn){
//小于2直接返回false
if(n2){
returnfalse;
}
for(inti=0;i*i=n;i++){
if(n%i==0){
returnfalse;
}else{
returntrue;
}
}
}
计算平方根(牛顿迭代法)牛顿开方法的算法及其原理
publicstaticdoublesqrt(doublec){
if(c0){
returnDouble.NaN;
}
doubleerr=1e-15;
doublet=c;
//1-c/t^2err两边同乘t
while(Math.abs(t-c/t)err*t){
t=(t+c/t)/2;
}
returnt;
}
方法的性质——参数按值传递:方法中改变一个参数变量的值对调用者没有影响,也意味着数组参数将是原数组别名——方法中使用的参数变量能引用调用者的数组并改变其内容。
递归:
递归三个重要性质:
递归总有一个最简单情况——方法第一条语句总是一个包含return的条件语句。
递归调用总是尝试解决一个规模更小的子问题,这样递归才能收敛到最简单的情况。
递归调用的父问题和尝试解决的子问题之间不应该有交集。
输入输出重定向和管道:
//模型:RandomSeq-标准输出-data.txt
javaRandomSeq.0data.txt
//模型:data.txt-标准输入-Average
javaAveragedata.txt
//模型:RandomSeq-标准输出-标准输入-Average
javaRandomSeq.0
javaAverage
QA如何将double变量初始化为无穷大?Double.POSITIVE_INFINITY(1.0/0.0)和Double.NEGTIVE_INFINITY(-1.0/0.0)
Java表达式1/0和1.0/0.0值分别是?第一个表达式产生一个运行时除零异常(会终止程序,因为该值未定义);第二个表达式值是Infinity(无穷大,JDK内部定义1.0/0.0为正无穷大,-1.0/0.0为负无穷大)。
负数除法和余数的结果是什么?表达式a/b的商会向0取整;a%b的余数定义为(a/b)*b+a%b恒等于a。例如-14/3和14/3的商都是-4,但-14%3是-2,而14%-3是2。
2数据抽象使用抽象数据类型继承的方法Java中的所有数据类型都会继承toString()方法来返回String表示的该类型的值。Java会在用+运算符将任意数据类型的值和String值连接时调用该方法。该方法的默认实现并不实用(它会返回用字符串表示的该数据类型值的内存地址),因此常常会提供实现来重载默认实现,并在此时在API中加上toString()方法。此类方法还有equals()、白癜风多长时间能治愈北京白癜风专科医院怎么走