基础总结<1>--JAVA基础

                      Java学习阶段总结
前五节小总结
Java基础入门
Java基本语法
定义类的格式:public class 类名{  }
定义变量的格式(变量属于方法或者循环添加等{}中间的变量):
数据类型  变量名;
数据类型  变量名  =  值;
属性是类一级的变量。
定义for循环格式:for(数据类型 变量名 = 值;条件;自增量或者自减量){  //循环体 }
定义if条件格式:if(条件){  //程序体}else if(条件){ //程序体 }
If和For循环的时候,如果循环下只有一条语句(一条程序体,则可以不需要大括号)

编写Java类时需要注意的几点:
1. 文件名必须和类名保持一致。
2. Java中区分大小。
3. Java的命名规则:
a) 命令类的名字是,首字母要大写,如果类名是由多个单词组成,则每个单词的首字母要大写。
b) 方法名和变量名命名时,首字母要小写,如果由多个单词组成,则第二个单词开始的首字母要大写。

Java的基本数据类型
Byte    字节
Boolean  布尔值
Int    整数
Short   短整型
Long   长整型
Float   单精度
Double  双精度
Char   字符


类和对象
对象
对象:万事万物皆对象。
对象由特征和行为组成。


类:具有相同特征和相同行为的对象的集合。
类是由属性和方法组成。
类是一种自定义的数据类型。

类的结构
Public class 类名{
//属性
//属性的结构
Private 数据类型  属性名;
Private 数据类型  属性名 = 值;

//构造函数
Public 类名([参数类型  参数名,……]){
//赋值操作
}

//方法
//方法的结构
Public 返回类型  方法名([参数类型  参数名,……]){
//程序体
}
}

方法传递参数
1. 基本的类型
2. 自定义的类类型

方法重载
实现方法重载的必要条件:
1. 方法必须要在同一个类中间。
2. 方法的名字必须要相同。
3. 方法所带的参数个数或者参数类型要不同。
调用实现了方法重载的方法时,是根据参数的个数或者参数的类型,来决定要调用那一个方法。

方法分类
1. 根据参数来进行分类
a) 有参数的方法
b) 无参数的方法
2. 根据返回类型进行分类
a) 有返回值的方法
b) 无返回值的方法

构造函数
构造函数一种特殊的方法。
定义格式:public 类名([参数类型  参数名,……]){ //赋值操作 }
用途:1.用来创建对象;2.给属性赋值。
特殊的几点(和普通方法的区别):
1. 没有返回类型
2. 函数名和类名要保持一致。
3. 构造函数只有在创建对象的时候才被执行一次,其他时候都是不可以被使用的。

This关键字
This关键字:
第一个用途用来区分变量和属性的。
第二个用途用来表示当前的对象(是哪一个对象在调用方法,则this表示的就是调用方法的对象)。

值传递和引用传递
值传递:适用于所有的基本数据类型。
值传递:将目标变量的值从新拷贝一份,传递到新的变量中,这样就形成了两份独立的数据。如果对新变量的值做任何的修改是不会影响到目标变量的值;反之一样的。

引用传递:适用于所有的类类型。(自定义的类类型)
引用传递:创建对象的时候,对象名中保存的是对象实例在内存中的地址,如果对对象名作修改,对象实例是不会受到影响的。


















类的继承
为什么需要继承
降低工作量、降低程序的复杂性、是程序提高可扩展性……

继承的实现
一个类继承另外一个类的使用的关键字是extends
继承的格式: public class 子类名  extends 父类名{    }

继承到了什么
子类继承到了父类的公有的属性和公有的方法,构造函数是不能被子类继承的。
子类中,不能继承父类函数。如果能继承,那么你就可以在子类中调用构造函数了,而创建对象时,是系统管理调用构造函数,我们自己 不能调用类的构造函数。 子类在实现化时,首先调用父类构造函数,实例化父类。之后才是子类自身实例化。

方法重写
实现方法重写的必要条件是:
1. 必须要有继承关系。
2. 子类的方法名必须和父类的方法名一致,子类重写的方法中所带的参数必须和父类方法中所带的参数要保持一致。

在是西安了继承的关系下,调用方法时会优先执行子类的方法,如果子类不存在该方法,则使用父类的方法。

自动转型
自动转型的必要条件是存在继承关系。
自动转型的格式:父类名 对象名  =  new 子类构造函数([参数类型  参数名,……]);
子类向父类自动转型。

多态实现
多态实现的前提条件:需要继承的关系和方法重写。
多态:JVM在调用方法的时候,是不确定所调用的方法是子类的还是父类的,只有在运行的瞬间才知道调用的方法是谁的。

接口的定义
定义接口的格式:public interface 接口名{ 
//定义常量的语法
Public static final 常量名  = 值;

//定义方法的语法:
Public 返回数据类型  方法名([参数类型 参数名,……]);
}
接口是用来定义方法的,所定义的方法是没有程序体的,如果子类要实现接口,则必须重写接口中定义的所有方法。
接口中的每一个方法都必须是公有的,并且没有{},只能以;。
即可中的属性都必须将其定义为常量。
接口是不可以用来创建的对象,不可以使用new关键字。
可以将接口作为对象名的类型
接口名 对象名  =  new  实现接口的子类构造函数([参数类型  参数名,……]);

接口的实现
实现接口的语法:public class 子类名  implements  接口名{ 
//子类必须重写接口中定义的方法
}

接口的继承
接口可以继承另外的接口.
继承的格式是:public interface 子接口名  extends  父接口名{ 
//如果父接口中定义了方法,子接口可以不重新定义。
}

抽象类的定义
抽象是介于接口和类之间的一种新的类。
抽象类的定义格式:public abstract  class  抽象类的名字{
//可以实现方法,也可以不实现方法
Public 返回类型  方法名([参数类型  参数名,……]){
//程序体
}

Public abstract  返回类型 方法名([参数类型 参数名,……]);
}
如果子类实现了抽象类,但是抽象类定义了抽象的方法,则子类必须要重写抽象方法,已经被实现的方法,可以不用重写。

抽象类的实现
抽象类的实现格式:public class  子类名  extends 抽象父类名{
//程序体
}
画板实现
所有类的父类
   java中,object类是所有类的父类,用户自定义默认扩展自object类;

Swing组件的分类
   一,容器
       1各种组件必须放在容器里
2容器本身也是一种组件
3分类
     顶层容器:小应用程序Applet->JApplet
               对话框Dialog
               框架(Frame)(javax.swing.JFrame)
     其他容器:  面板(Panel)
               滚动窗格(Scrall pane)
               分裂窗格(Split pane)
               标签窗格(Tabbed pane)
               工具条(Toal bar)
   二,组件
1, 基本控制组件:      按钮(Button),单选按钮(RadioButton),                  复选框(CheckBox),组合框(Combobox),列表(list),菜单(Menu),滑动条(Slider),文本框(text fields)
2, 不可编辑的信息显示组件:     标签(Label),进度条(Progress bar),提示信息(Tool tip)
3, 可编辑的信息显示组件:   颜色选择框(Color chooser),              文件选择器(File chooser),表格(Table),文本(Text),树(形结构)(Tree) 
   三,把组件加入到容器中
1, 大多数框架容器如Frame, Window等都不能直接加入组件,必须先把组件加入到容器的“内容窗格”中,再把“内容窗格”加入到容器中
2, 步骤
                 创建要显示的组件
                 创建要加载这些组件的框架容器
                 创建一个框架容器内部的容器(即“内容窗格”),并用这个容器来加入组件
3, 简单的加入组件的例子
Import java.awt.;
Import javax.swing.;
Class ButtonFrame extends JFrame{
JButton load =new JButton(“Load”);
JButton save =new JButton(“Save”);
JButton unsubscribe =new JButton(“Unsubscribe”);
Public ButtonFrame(){
Super(“ButtonFrame”);
   setDefaultCloseOperation(JFrame.EXIT_NO_CLOSE);
   Container container=getContentPanel();
   Container.setLayout(new FlowLayout());
   Container.add(load);
   Container.add(save);
   Container.add(unsubscribe);
setSize(80,170);
setVisible(true);
}
Public static void main(String[] arguments){
ButtonFrame bf =new ButtonFrame();
}
}
            

布局管理器
BorderLayout
GridBagLayout
FlowLayout
CardLayout
GridLayout
SpringLayout
JBuilder自带的VerticalFlowLayout
JCreator中也有不少
其中,
Null布局的格式如下:
Javax.swing.JButton btn = new javax.swing.JButton(“登录”);
X表示的x轴的起始位置.y表示Y轴的起始位置.width表示组件的宽度。Height表示组件的高度。
Btn.setBounds (int x, int y, int width, int height)


Swing的事件机制
1. 寻找事件的源头:如(画板,QQ登陆界面,……)
2. 判断事件的类型如(Pressed 、Clicked 、Exit、 Enter……):
3. 编写些事件处理类和事件处理方法(如Pressed时保存坐标值)
4. 创建事件处理类的对象(如DrawMouseListener(鼠标监听器的实现类) dml(事件处理者))
5. 给事件源添加事件监听器,并给监听器指定事件处理对象。如DrawFrame.addMouseListener(dml);
每当事件监听器捕获到事件时,就发送一个通知给事件处理对象,事件处理对象接收到事件通知后,调用相应的事件处理方法,再执行事件处理代码。
自定义队列
数组的基本用法
Int a [] = new int[5];
Int a [] = {3,4,5,6,7,8,9,9,0};
Int a[];
a = new int[10];
获取数组中元素的个数:length属性。
获取指定位置的元素:通过数组元素的索引位置。数组的索引位置从0开始,至length-1。 a[索引]

数组排序
编写代码完成4中排序。

多维数组
Int a [][] = new int[4][4];
获取数组中的行数:a.length属性。
获取数组中的某行有多少列数:a[0].length属性。
获取指定位置的元素:通过数组元素的索引位置。数组的索引位置从0开始,至length-1。 a[索引][索引]

自定义队列的实现
将数组交给一个类去管理。

泛型
E表示的是泛型,泛型表示我可以匹配任何类的对象。强制转换为泛型的方法:(E)。

优化思路
自定队列上进行一些方法优化。
equals()方法与 ==之间的区别
equals 方法判断两个字符串是否想等,其背的含义是判断两个字符串的值是否相等,如果需要判断两个对象是否相等,判断的是两个相同类型的对象的域数据相等则这两个类对象相等,一般情况下建议对toString()方法进行override.
== 操作符来检测两个字符串是否相等,一般情况下,不建议使用==操作符来判断两个字符串是否相等,==操作符只能判定两串是否存储在同一个内存区间位置。当然字符串在同一个内存位置,哪么它们必然相等。但是也完全有可能把串的多个拷贝存在不同的内存空间。
String s = "hello";
if(s=="hello")//这是对的,
if(s.subString(0,4)=="hell")//可能错的
在JAVA 虚拟机中,只有字符常量会被共享,而+或subString等操作产生的结果串并不共享,因此,不要使用==操作符来比较字符串。




包,类及方法的命名规则
1) 包 
全部小写。  标识符用点号分隔开来。为了使包的名字更易读,Sun 公司建议包名中的标识符用点号来分隔。 
Sun 公司的标准 java 分配包用标识符 .java 开头。
全局包的名字用你的机构的 Internet 保留域名开头 。 
局部包:  interface.screens 
全局包:  com.rational.www. interface.screens 
2) 类,接口 
类的名字应该使用名词。 
每个单词第一个字母应该大写。 
避免使用单词的缩写,除非它的缩写已经广为人知,如HTTP。 
Class Hello ; 
Class HelloWorld ; 
Interface Apple ; 
3) 方法 
第一个单词一般是动词。 
第一个字母是小些,但是中间单词的第一个字母是大写。 
如果方法返回一个成员变量的值,方法名一般为get+成员变量名,如若返回的值是bool变量,一般以is作为前缀。 
如果方法修改一个成员变量的值,方法名一般为:set + 成员变量名。 
getName();  setName();  isFirst(); 
4) 变量 
第一个字母小写,中间单词的第一个字母大写。 
不要用_或&作为第一个字母。 
尽量使用短而且具有意义的单词。 
单字符的变量名一般只用于生命期非常短暂的变量。i,j,k,m,n一般用于integers;c,d,e一般用于characters。 
如果变量是集合,则变量名应用复数。 
命名组件采用匈牙利命名法,所有前缀均应遵循同一个组件名称缩写列表。 
String myName;  int[] students;  int i;  int n;  char c;  btNew;  (bt是Button的缩写) 
5) 常量 
所有常量名均全部大写,单词间以‘_’隔开。  int MAX_NUM; 
6) 其它 
开发人员如果遇到上述表格中未列举的类型,请书面通知相关管理人员,由管理人员集中更新列表内容,不得擅自启用未经确定的新变量前缀。 

————————————————>待续 

欲知后文,

请待下结.

 

你可能感兴趣的:(java,数据结构,框架,swing,JBuilder)