<!--EndFragment-->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 字符
String 字符串
实例:打印图形
//定义一个First类,用来打印一个倒立的一个直角三角形
public class First {
//定义一个主函数
public static void main(String [] args) {
//定义总行数
int count=6;
//填充的图形为
String fills="*";
//利用for输出每一行
for(int i=1;i<count;i++){
for(int j=count;j>=i;j--){
System.out.println(fills);
}
System.out.println();
}
}
}
类和对象
对象
对象:万事万物皆对象。
对象由特征和行为组成。
类
类:具有相同特征和相同行为的对象的集合。
类是由属性和方法组成。
类是一种自定义的数据类型。
类的结构
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表示的就是调用方法的对象)。
值传递和引用传递
值传递:适用于所有的基本数据类型。
值传递:将目标变量的值从新拷贝一份,传递到新的变量中,这样就形成了两份独立的数据。如果对新变量的值做任何的修改是不会影响到目标变量的值;反之一样的。
引用传递:适用于所有的类类型。(自定义的类类型)
引用传递:创建对象的时候,对象名中保存的是对象实例在内存中的地址,如果对对象名作修改,对象实例是不会受到影响的。
实例:student类、teacher类、manager类
类的继承
为什么需要继承
降低工作量、降低程序的复杂性、是程序提高可扩展性……
继承的实现
一个类继承另外一个类的使用的关键字是extends
继承的格式: public class 子类名 extends 父类名{ }
继承到了什么
子类继承到了父类的公有的属性和公有的方法,构造函数是不能被子类继承的。
<!--EndFragment-->
方法重写(与方法重载区分)
实现方法重写的必要条件是:
1. 必须要有继承关系。
2. 子类的方法名必须和父类的方法名一致,子类重写的方法中所带的参数必须和父类方法中所带的参数要保持一致。
在是继承的关系下,调用方法时会优先执行子类的方法,如果子类不存在该方法,则使用父类的方法。
自动转型
自动转型的必要条件是存在继承关系。
自动转型的格式:父类名 对象名 = new 子类构造函数([参数类型 参数名,……]);
子类向父类自动转型。
多态实现
多态实现的前提条件:需要继承的关系和方法重写。
多态:JVM(java虚拟机)在调用方法的时候,是不确定所调用的方法是子类的还是父类的,只有在运行的瞬间才知道调用的方法是谁的。
接口的定义
定义接口的格式:public interface 接口名{
//定义常量的语法
Public static final 常量名 = 值;
//定义方法的语法:
Public 返回数据类型 方法名([参数类型 参数名,……]);
}
接口是用来定义方法的,所定义的方法是没有程序体的,如果子类要实现接口,则必须重写接口中定义的所有方法。
接口中的每一个方法都必须是公有的,并且没有{},只能以;。
接口中的属性都必须将其定义为常量。
接口是不可以用来创建的对象,不可以使用new关键字。
可以将接口作为对象名的类型
接口名 对象名 = new 实现接口的子类构造函数([参数类型 参数名,……]);
接口的实现
实现接口的语法:public class 子类名 implements 接口名{
//子类必须重写接口中定义的方法
}
<!--EndFragment-->
接口的继承
接口可以继承另外的接口.
继承的格式是:public interface 子接口名 extends 父接口名{
//如果父接口中定义了方法,子接口可以不重新定义。
}
抽象类的定义
抽象是介于接口和类之间的一种新的类。
抽象类的定义格式:public abstract class 抽象类的名字{
//可以实现方法,也可以不实现方法
Public 返回类型 方法名([参数类型 参数名,……]){
//程序体
}
//不实现方法
Public abstract 返回类型 方法名([参数类型 参数名,……]);
}
如果子类实现了抽象类,但是抽象类定义了抽象的方法,则子类必须要重写抽象方法,已经被实现的方法,可以不用重写。
抽象类的实现
抽象类的实现格式:public class 子类名 extends 抽象父类名{
//程序体
}
画板实现
所有类的父类
Java中所有类的父类是Object的类。(已经存在的类和我们定义的类)
Swing组件的分类
Swing组件分为容器组件和元素组件:
容器组件表示可以在该组件上添加其他的元素组件或者容器组件。
元素组件表示的是不可以在组件上添加其他的组件。
容器组件:JFrame(顶级容器)、JPanel等
元素组件:JButton、JLabel、JTextField、JPasswordField、JComboBox、等
<!--EndFragment-->
布局管理器
给容器布局的。
FlowLayout、null、等
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)。
优化思路
自定队列上进行一些方法优化。
实例:画板实现重绘
//用来存储每一次保存 画线的坐标值类的对象
public class DrawLineList {
// 定义一个数组,初始的长度为零
private DrawLine dlList[] = new DrawLine[0];
/**
* 向队列中添加一个保存画线坐标值类的对象
* @param dl:画线坐标值类对象
*/
public void add(DrawLine dl) {
// 创建一个新数组,新数组的长度是原始数组的长度+1;
DrawLine[] tempDL = new DrawLine[dlList.length + 1];
// 将对象添加到新数组中最后一个位置
tempDL[tempDL.length - 1] = dl;
// 将原始数组中的内容存入新数组中
for (int i = 0; i < dlList.length; i++) {
tempDL[i] = dlList[i];
}
//让原始数组重新指向新的数组
dlList = tempDL;
}
/**
* 获取指定位置的画线类对象
* @param index:指定的位置
* @return:要返回指定位置的对象
*/
public DrawLine get(int index) {
//得到指定位置的对象
DrawLine dl = dlList[index];
//将对象返回
return dl;
}
/**
* 返回数组中存储的画线类对象的总数
* @return:画线类对象的总数
*/
public int size() {
return dlList.length;
}
}
五子棋
一、实现思路
1、 棋盘的实现
2、 人人对战
3、 人机对战(未实现)
第一步的是实现包含知识有:1、布局管理器 2、表格的对象 3、给表格添加监听器
<!--EndFragment-->
第二步的实现包含的知识有:1、用二维数组来存放数据 2、监听器的实现 3、算法的实现
算法以行为例
/**
* 判断横向是否有5个连在一起的
*/
public boolean checkRow(int r,int c){
int con=0;
//先往右边找
for(int i=c+1;i<data[0].length;i++){
if(data[r][i]==null||!data[r][i].equals(data[r][c])){
break;
}
con++;
}
//往左边走
for(int i=c;i>=0;i--){
if(data[r][i]==null||!data[r][i].equals(data[r][c])){
break;
}
con++;
}
if(con>=5){
return true;
}
return false;
}
体会:记得第一次来试听的时候,那也是我正式的接受编程语言的第一堂课,虽然以前断断续续的自学过一些语言(像vb.net,c),但是效果完全不一样。记得第一次的作业-----打印图形,编译时那个错误啊,是一片片的(什么大写啊,什么单词拼错了…………)。在错误中完成了作业,但是还是比较兴奋的。接下来的课程中让我记忆最深的是那个内部类,好像现在也不咋知道用。还有就是在做五子棋的时候,第一次接触到了算法,以前只知道有这么一回事,但是没有写过算法。当思路有了的时候而不会用语言表述,有点悲剧。后来还是照着龙哥的行的例子写完的。急忙写完这个总结,细节还得完善。
分享到:
相关推荐
这是我总结整理的Java线程总结,希望对大家有所帮助!
这是我总结的Java多线程资料 很全 很经典
我总结的课堂游戏.doc
我总结的全部sql语句,值得一看啊 我总结的全部sql语句,值得一看啊
花了一周-我总结了120个数据指标与术语.docx
泛型编程与设计新思维 我总结的经典c++编程思想
精华我总结放疗定位方法桌面.pdf
大学两年来自我总结计划.pdf
关于 MyBatis 我总结了 10 种通用的写法
北师大版小学英语语法汇总我总结.doc
这是我总结的笔试题(含答案)
复盘国旗刷屏活动,我总结了这三点 .doc
我总结了微信群运营的5条经验 .doc
我总结的Android编程规范 - 薰衣草的旋律 - 博客园1
滤波器学习的相关,里面记录了我总结的一些滤波器相关知识
我总结的光学知识,包括理论和供应商规格书part2
我总结的光学知识,包括理论和供应商规格书part1
我总结的AS2代码规范_第一版 还需要改进
在美团点评做了三年商家会员产品,我总结了这些.pdf
我总结收集的一些经曲的DOS命令 主要内容有网络应用方面的和系统操作类的.