黑马程序员----JavaSE一些常用基础知识点记录-学习日记

时间:2021-06-07 00:27:55

------- android培训java培训、期待与您交流! ----------

1.数据类型

编程即是对数据的处理,作为一个程序员,对计算机里的数据类型要有一定的了解,否则对后续的编程学习会造成很大的阻碍。

java中的数据类型。

黑马程序员----JavaSE一些常用基础知识点记录-学习日记

基本数据类型大小

数据类型 字节数
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:被垃圾回收器回收之前的操作