------- android培训、java培训、期待与您交流! ----------
1.数据类型
编程即是对数据的处理,作为一个程序员,对计算机里的数据类型要有一定的了解,否则对后续的编程学习会造成很大的阻碍。
java中的数据类型。基本数据类型大小
数据类型 | 字节数 |
byte | 1 |
short | 2 |
int | 4 |
long | 8 |
float | 4 |
double | 8 |
char | 2 |
boolean | 1 |
所对应的封装类是首字母改成大写,int 与与char 分别为Integer, Character 。
自动类型转换:由低位数数据变成高位数数据,不需要显式声明。
强制类型转换:有高倒低,需要显示声明。
面试题:short a=a+5;错误 。Short a+=5正确。
2.进制问题
对二的次方运算时,“>>””<<”效率高。如3<<3的运算速度快于3*8
3.switch
Switch的选择类型只有四种:byte short int char(没有String!!!)
4.continue,break,return
循环中得到想要的结果后需要跳出,下面三个关键字对应不同的跳出范围
1)continue跳出本次循环,到下一次循环
2)Break结束整个循环
3)Return 结束函数,返回值。
5.数组的排序问题
选择排序与冒泡排序 Arrays.sort()
package com.cn.test;
import java.util.Arrays;
public class Sort {
public static void BSort(int [] tmp){//冒泡排序
for(int i=0;i<tmp.length-1;i++){
for(int j=0;j<tmp.length-i-1;j++){
if(tmp[j]>tmp[j+1]){
swap(tmp,j,j+1);
}
}
}
}
public static void SSort(int []tmp){//选择排序
for(int i=0;i<tmp.length-1;i++){
for(int j=i+1;j<tmp.length;j++){
if(tmp[i]>tmp[j]){
swap(tmp,i,j);
}
}
}
}
public static void swap(int [] tmp,int i,int j){//交换数组中的位置
int t=tmp[i];
tmp [i]=tmp [j];
tmp[j]=t;
}
public static void main(String[] args) {
int[]a={3,7,3,2,6,2,4};
int[]b={3,7,3,2,6,2,4};
int[]c={3,7,3,2,6,2,4};
BSort(a);
SSort(b);
Arrays.sort(c);
for(int i=0;i<a.length;i++){//分别输出一样数组的三种排序后结果
System.out.println("a["+i+"]:"+a[i]+"@@@b["+i+"]:"+b[i]+"@@@c["+i+"]:"+c[i]);
}
}
}
6.递归与递推
package com.cn.test;
/**
* 求斐波那契数列第n项,n<30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55
* @author Administrator
*
*/
public class Digui {
//递归
static int digui (int target){
if(target<2) return 1;
else return digui(target-1)+digui(target-2);
}
//递推
static int ditui(int target){
int f0=1,f1=1,f=0;
for(int i=0;i<target-1;i++){
f=f0+f1;
f0=f1;
f1=f;
}
return f;
}
public static void main(String[] args) {
System.out.println(digui(30));
System.out.println(ditui(30));
}
}
7.函数的多参数
public class MultipleParam {
static void test(int...i){//传入形参时,函数内部还是作为数组
for (int j : i) {
System.out.println(j);
}
}
public static void main(String[] args) {
test(1,3,4,6,7);//传入多个参数
}
}
8.单例模式
package com.cn.test;
/**
* 单例模式
*/
public class SigleDemo {
public static void main(String[] args) {
// TODO 自动生成的方法存根
}
}
//饿汉式
class Ehanshi{
private Ehanshi(){};//私有化构造方法
private static Ehanshi e=new Ehanshi();//构造静态的对象(因为就一个实例,构造非静态的实例没意义)
public static Ehanshi getInstance(){//定义公有的提取对象方法
return e;
}
}
//懒汉式
class LanHanshi{
private LanHanshi(){};
private static LanHanshi l=new LanHanshi();
public static LanHanshi getInstance(){
if(l==null){//延迟加载
l=new LanHanshi();
}
return l;
}
}
//懒汉式加锁
class LanHanshiJiaShuo{
private LanHanshiJiaShuo(){};
private static LanHanshiJiaShuo l=new LanHanshiJiaShuo();
public static LanHanshiJiaShuo getInstance(){
if(l==null){//减少对锁的判断
synchronized(LanHanshiJiaShuo.class){//为了防止多线程的单例失效,这里加一把锁
if(l==null){
l=new LanHanshiJiaShuo();
}
}
}
return l;
}
}
9.折半查找
package com.cn.test;
/**
** 二分法查找
*/
public class BinarySearch {
public static int search(int[] arr,int val){
int start=0,end=arr.length-1;
while(start<=end){//注意这个循环有两个收敛要素
int mid=(start+end)/2;//第一个收敛要素,mid
if (arr[mid]>val) {
end=mid-1;//第二个收敛要素,start/end
}
else if(arr[mid]<val){
start=mid+1;
}
else return mid;
}
return -1;
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
int[]a={3,4,7,8,9};
System.out.println(search (a,8));
}
}
同样,Arrays工具了也提供了binaaySearch()方法
10.进制转换
常用计算用windows里calc的程序员模式就可以
包装类也提供了方法,如:Integer.toHexString()
11.常见面试题:final,finally,finalize的区别?
final:修饰符,修饰类时该类不能被继承,修饰变量是不能被修改,修饰函数时不能被重写。
finally:异常处理时用到,通常用作于回收未被释放的资源
finalize:被垃圾回收器回收之前的操作