Java基础总结

1.java文件的基本结构

编译-->运行

1)编译:.java源文件-->Javac编译-->.class文件(二进制代码)

2)运行java程序-->Jvm装载文件-->Jvm运行类文件

 

 

2.java中的数据类型

1)基本数据类型

<1>.byte 字节型   8bits

<2>.int   整 形  32bits

<3>.short 短整型  16bits

<4>.long 长整形  64bits

<5>.char 字符型  16bits

<6>.float 浮点型  32bits

<7>.double  双精度浮点型   64bits

<8>.boolean    布尔型      true/flase

附:①自动转型:小范围的类型值可以通过赋值运算直接转换为大范围的原始类型

   byte-->short-->char-->int -->long-->float-->double

      ②强制转型:将大范围类数据类型转化为小范围的数据类型(注:不应超过小范围数据类型的表示范围)

  

   float f = 1003.26 ;

   double d = f ; //自动转型

   int  i = (int) d ; //强制转型

   byte b = (byte) i ;  //错误,强制转化时不应超过小范围数据类型的表示范围

   

2)数组类型:详见下文

 

3)引用类型(类类型):自定义类、java中已定义的类(所有类的父类:Object)

           基本类型     类类型

     int   ---->Integer            

例:  /**

   * 定义一个整形类的对象

   * 优点:可以调用整形类中定义的函数  

   * 缺点:占内存多

    */

 Integer te = new Integer(10);

     

    char  --->Character

       byte  --->Byte

            ...      --->...

 

3.类与对象的关系分析

1)类是一个模板:类是一组对象的抽象,提取了这些对象的共同点,类中定义了具体对象所共有的方法和属性,通        过这个模板生成具体的对象,调用每个对象自己的方法,改变的就是具体对象的属性值

2)对象是类的具体事例:通过类,可以创建多个对象

Student st1 = new Student();

 

4.如何定义一个类:属性+方法

 

/**

 * 学生类

 * @author hpw

 *

 */

 

public class Student {

/**

* 设置学生姓名及学号

* @param name

*            :姓名

* @param num

*            :学号

*/

public void setName(String name, int num) {

this.name = name;

this.num = num;

}

 

/**

* 学习的方法

*/

public void study() {

scro++;

System.out.println(name + "学习中!学号为:" + num);

}

 

/**

* 玩的方法

*/

public void play() {

scro--;

System.out.println(name + "正在玩!学号为:" + num);

}

 

/**

* 统计分数的方法

*/

public void addscro() {

System.out.println(name + " 学号为:" + num + "  学分为:" + scro);

}

 

// 学生的名字属性

private String name;

// 学生的学号属性

private int num;

// 学生的学分属性,初始化为0

private int scro = 0;

}

 

 

5.创建对象的方式

1)无参:类名+对象名 = new 类名()

   有参:类名+对象名 = new 类名(参数1,参数2,…)

2)类名+对象名;

     对象名=new 类名()/new 类名(参数1,参数2,…);

 

Student st1=new Student();

等价于:Student st1;

     st1=new Student();

 

6.构造方法的作用,特点,构造方法与一般方法的区别

1)作用:在创建对象时,就可以初始化对象内部属性的值

2)特点:构造方法没有任何返回值的定义,而且方法名必须与类名字相同,创建对象时,构造方法只被调用一次

注:每个类都有一个默认的无参构造器,但如果重写了一个有参构造器,则无参构造器不被调用,除非在类中显示声明

3)与一般方法的区别:

①构造方法是在创建对象时被调用,而一般方法是执行对象的特定行为时被调用

②构造方法与类名相同,一般方法不能与类名相同

③构造方法无返回值,一般方法有返回值

 

7.为什么需要继承?如何去继承?继承到了什么?

8.类,抽象类,接口的特点,区别

9.方法的重载与重写

10.自动转型与强制转型

 

以上详见博文 《类的继承,接口》:http://hu19911021-163-com.iteye.com/blog/1066352

 

11.多态的理解

  1)使用多态之后,当需要增加新的子类类型时,无需更改父类,程序的可扩展性及可维护性增强

2)多态具有表现多种形态的能力

  3)对同一个指令,执行不同的操作,调用不同的方法

 

12.常用的界面开发组件

1)容器类:位于 javax.swing 下的 : JFrame(窗体类)   JPanel(面板类)

 位于 java.awt 下的 : Frame(窗体类)   Panel(面板类)

2)组件类: ① javax.swing ② java.awt

          JLabel                                         JLabel                         标签类

       JTextField                                  JTextField                   输入框类

          JButton                                      JButton                       按钮类

                    JComboBox                               JComboBox               下拉列表类

                    JCheckBox                                 JCheckBox                 复选框类

3)布局器:流式布局器  位于 java.awt.FlowLayout 下

 

13.事件监听机制的理解

       1)找到监听的事件源对象

       2)根据需要监听的事件实现对应的监听器接口

       3)  创建监听器对象

       4)将监听器对象绑定在事件源对象上


// 创建一个监听器对象,即是一个鼠标监听器,又是一个动作监听器 DrawListener dlis = new DrawListener(g); // 给窗体加鼠标监听器 this .addMouseListener(dlis); // 给按钮加动作监听器 line.addActionListener(dlis); rect.addActionListener(dlis); oval.addActionListener(dlis);
selectColor.addActionListener(dlis);

14.数组

1)一维数组:int t[] = new int[10];              int t[] = new int[]{1,2,3,4,5,6};                   int t[] = {1,2,3,4,5,6}; 2)二维数组:int[][] a = new int[10][8];                      int[] a[] = new int[10][8];

 

15.队列:长度可变的数组

 

private String[] str=new String[0]; /** * 往数组中添加元素 * @param s:添加的元素 */ public void add(String s){ //使数组元素+1 String[] str1=new String[str.length+1]; //将添加的元素放到最后 str1[str1.length-1]=s; for(int i=0;i<str.length;i++){ str1[i]=str[i]; } str=str1; } /** * 获取数组元素 * @param index:要获取的下标 * @return */ public String get(int index){ String s=str[index]; return s; } /** * 求数组的长度 * @return */ public int size(){ return str.length; } /** * 移除数组中的一个元素 * @param index */ public void remove(int index){ String[] str1=new String[str.length-1]; //下标前的元素 for(int i=0;i<index-1;i++){ str1[i]=str[i]; } //下标后的元素 for(int i=index-1;i<str.length-1;i++){ str1[i]=str[i+1]; } str=str1; } /** * 向数组中插入一个元素 * @param s:要插入的元素 * @param index:要插入的下标 */ public void insert(String s, int index){ String[] str1=new String[str.length+1]; //下标前的元素 for(int i=0;i<index;i++){ str1[i]=str[i]; } str1[index]=s; //下标后的元素 for(int i=index;i<str.length;i++){ str1[i+1]=str[i]; } str=str1; } /** * 修改指定位置的元素 * @param s:修改后的元素 * @param index:要修改元素的下标 */ public void modify(String s,int index){ str[index]=s; }

 

 

泛型队列:

 

private Object[] str=new Object[0]; /** * 往数组中添加元素 * @param s:添加的元素 */ public void add(E e){ //使数组元素+1 Object[] str1=new Object[str.length+1]; //将添加的元素放到最后 str1[str1.length-1]=e; for(int i=0;i<str.length;i++){ str1[i]=str[i]; } str=str1; } /** * 获取数组元素 * @param index:要获取的下标 * @return */ public E get(int index){ E e=(E)str[index]; return e; } /** * 求数组的长度 * @return */ public int size(){ return str.length; } /** * 移除数组中的一个元素 * @param index */ public void remove(int index){ Object[] str1=new Object[str.length-1]; //下标前的元素 for(int i=0;i<index-1;i++){ str1[i]=str[i]; } //下标后的元素 for(int i=index-1;i<str.length-1;i++){ str1[i]=str[i+1]; } str=str1; } /** * 向数组中插入一个元素 * @param s:要插入的元素 * @param index:要插入的下标 */ public void insert(E s, int index){ Object[] str1=new Object[str.length+1]; //下标前的元素 for(int i=0;i<index;i++){ str1[i]=str[i]; } str1[index]=s; //下标后的元素 for(int i=index;i<str.length;i++){ str1[i+1]=str[i]; } str=str1; } /** * 修改指定位置的元素 * @param s:修改后的元素 * @param index:要修改元素的下标 */ public void modify(E s,int index){ str[index]=s;

}

 

18.值传递与引用传递的理解

1)值传递:通过复制号(=)进行传递,传递后双方不再建立有联系,一方的改变不影响到另一方

2)引用传递:引用传递传递的是地址,传递完成后,双方地址相同,一方发生改变,因地址相同,另一方也     会发生相应的改变

 

 

 

 

 

 

你可能感兴趣的:(java,jvm,数据结构,F#)