为黑马奋斗的日子--Java基础巩固上

来源:互联网 发布:mac xlsx 编辑:程序博客网 时间:2024/04/29 03:01

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


            由于是第一篇学习日志,所以我想说点题外话。首先我要感谢 传智播客的韩老师。不管是你讲的视频还是上次和您在面对面的交谈都让我受益匪浅。虽然很遗憾没法坐在课堂上去听您讲课,但您对我说的一些话语我会一直铭记于心。非常希望能在以后的时间里和您能保持联系 呵呵。嗯 这次的学习日志主要是把在自学中学到的知识点和一部分心得总结和保存,同时也希望高手们多多指出不足。我在csdn上也会发放。要是有和我一样像要走上编程之路的战友们觉得不错,就顶下我哦 在这也希望这些战友都能在自己所坚守的道路上越走越远!

 java 基础:

1. path 和 classpath

环境变量path 和 classpath都是路径,path是编译时需要调用程序所在的地方,而classpath是在编译的时候,要调用到其他类时候,会通过它来寻找到需要的类

 2.基本数据类型

  java有8种基本数据类型 分别为:整数型:byte 1个字节 short 2个字节,int 4个字节,long 8个字节, 大小是(-2的字节*8-1次方到2的字节*8-1次方-1)浮点类型:float 4个字节,double 8个字节 字符类型:char 2个字节(在java中对char进行运算时,直接当做ascii码对应的整数对待) java的自动转化是从高精度到低精度 顺序为: byte→(short,char)→int→long→float→double,

3.java三大流程控制中注意事项

在switch  case语句中 在switch 中可用的数据类型主要是:byte,short,int,char,enum等 

                                  其中defult语句是可选的 在case 中没有找到就会执行它,也就是谁都不要了就给它

在while循环和do while循环  前者会先执行判断语句,而后者会先走循环语句  在while循环中在表达式的括号中不能像for循环那样加";"号

break 是直接终止 而contiune它只能出现在(while,do while for)的子语句中 编译到它时就会跳出这次循环

4.构造函数,this,static

  构造函数不能有返回值void也不行 名字要和类名一样 在创建新对象时,系统会自动调用该类的构造方法完成对新对象的初始值 一个类可以有多个构造方法没有系统也会给个默认的

this 我觉的就是本类对象 可以调本类方法,变量,但不能再类定义的外部使用。

static 是静态 用它声明的方法是静态方法(也叫类方法)声变量是静态变量(也叫类变量) 可以直接用类名去调用,但静态方法不能访问到非静态的方法和变量

5.继承中注意事项

父类是不能用private 来修饰的否则子类无法继承

子类的对象无法直接调用父类的方法 要通过方法重写

1.如果子类没有定义构造方法,则调用父类的无参数的构造方法。
2.如果子类定义了构造方法,不论是无参数还是带参数,在创建子类的对象的时候,首先执行父类无参数的构造方法,然后执行自己的构造方法。
3.如果子类调用父类带参数的构造方法,可以通过super(参数)调用所需要的父类的构造方法,切该语句做为子类构造方法中的第一条语句。

子类继承父类可以拿到父类中所有方法除了构造方法 只有在子类的构造方法中使用super去调用父类的构造方法

抽象类和接口

其实都是来获取 父类/接口中的方法 java是不能多继承的 一个类只能有一个父类
但可以实现许多接口 这也是java面向对象的思想
 而且写在接口中的变量都是static的 但在接口(interface)定义的方法都不能有主体
在abstract class中可以有非abstract已经实现的方法 接口中定义的变量都是public staticfinal的 必须给初始值 所以不能重新定义和改变它的值
但abstract class 中定义的变量是friendly型 可以在子类中重新定义 也可以改变它的值
 
6.java中的前期绑定和后期绑定
     在编译的时候就能确定的类别就是前期绑定,如果在编译的时候不能确定只能在运行才能确定的是后期绑定
7.数组

数组在定义的时候不能设置大小 如:int arr[4]; 

在给引用数组赋值时一定要先初始化他们如: 数组名[0]=new class();

在要比较2个String 时不要用“==”而用equals方法 其实'"=="比较的是2个数值在内存的位置  equals是区分大小写的 如不想区分可以用

equalsIgnorelase 方法

数组的大小必须事前定义 数组的小标是从0开始

在这里补充一下 在java引用传递中外面如果是基本数据类型 那它无论在内部有怎样的运算都不会改变它外部的值,但如果是个复杂数据类型如 数组,接口...等 那它在内部就直接影响在外面的值

使用System.arraycopy()函数可以拷贝数组

9.排序

一.冒泡排序法

 public void satr(int arr[]){
  int temp=0;
  //开始排序
  //外层循环决定它一共走几趟
  for(int i=0;i<arr.length-1;i++){
   //内层循环开始逐个比较,如果发现
   //后一个数比前一个数大,则交换2个数的位置,(递减排序)
   //如果前一个数比后一个数大,交换2个数的位置(递增排序)
   for(int j=0;j<arr.length-1-i;j++){
    if(arr[j]<arr[j+1]){
     temp=arr[j];
     arr[j]=arr[j+1];
     arr[j+1]=temp;
    }
   }
  }
 }

二.选择式排序法

   public void sort(int arr[]){
  //假定数组中第一个数是最小的
  int temp=0;
  //开始比较从第2个数开始
  for(int j=0;j<arr.length-1;j++){
   int min=arr[j];
   //记录最小值的小标
   int minint=j;
   //如果第一个数比下一个大 则就把下个数赋给min当最小值,以此类推下去
     for(int n=j+1;n<arr.length;n++){
    if(min>arr[n]){
     min=arr[n];
     //在比较中记录它的下标
     minint=n;
    }
   }
   temp=arr[j];
   arr[j]=arr[minint];
   arr[minint]=temp;
  }
 }

三.插入式排序法

 public void Interx(int arr[]){
   for(int i=0;i<arr.length;i++){
    //先把inter当成一个准备插入的值
    int inter=arr[i];
    //把inter和它前一个数比较
    int index=i-1;
    //如果inter比前一个数大
    while(index>=0 && inter>arr[index]){
   // 就把它前一个数的值赋给index;也就是把arr[index]向后移动
     arr[index+1]=arr[index];
     //让index向前移动
     index--;
    }
    //再将inter插入到合适的位置上
    arr[index+1]=inter;
   }
  }

 

......嗯 今天先到这里(太困了去睡了)    

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

        

 

原创粉丝点击