Java程序设计

一、第一章

1.新建一个项目

2.新建一个包

命名规则:反转域名命名法

3.新建一个类

4.代码编写

5.编译运行

注意:

一个项目有若干个包组成;
一个包有若干个类组成;(类分为:自定义类、系统提供类)
一个类由若干个方法组成;(仅有一个主方法)
一个方法有若干个语句组成;

6.输入语句

Scanner scanner=new Scanner(System.in);

7.Unicode字符集
8.字面值

字符的字面值:‘a’
字符串的字面值:“abc”
整形的字面值:5

9.变量

  • 局部变量需初始化赋值后才能使用;
  • 实例变量可与局部变量同名;
  • 局部变量中不可出现同名变量;
  • 在这里插入图片描述

  • final 数据类型 变量名 =初值

10.数组在这里插入图片描述
在这里插入图片描述

(1).输出100以内的随机数
int[][] a=new int[3][4];
int [][]b;
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
a[i][j]=(int) (Math.random()*100);
}
}
b=a;

    	for(int i=0;i<a.length;i++){
    		for(int j=0;j<a[i].length;j++){
    			System.out.print(a[i][j]+" ");
    		}
    		System.out.println(" ");
    	}
//(2)
     char [][] s={
				    {'白','日','依','山','尽'},
				    {'黄','河','入','海','流'},
				    {'欲','穷','千','里','目'},
				    {'更','上','一','层','楼'}
	  };
		 
		 for(int i=0;i<4;i++){
			 for(int j=0;j<5;j++){
				 System.out.print(s[i][j]); 
			 }
			 System.out.println(" "); 
		 }
		 
		 System.out.println(" "); 
		 
		 for(int i=0;i<5;i++){
			 for(int j=3;j>=0;j--){
				 System.out.print(s[j][i]); 
			 }
			 System.out.println(" "); 
		 }
		 
	}

/*黄河入海流 
欲穷千里目 
更上一层楼 
 
更欲黄白 
上穷河日 
一千入依 
层里海山 
楼目流尽 */

11.String 字符串

String s=“abc”; 字符串引用类型等价于String s=new String (“abc”); String 类的引用

注:java数据类型两大类:八个基本数据类型,其余都是引用类型

方法是实现某种功能的代码集合
public static void get(){
.
}

二、第二章·类与对象

1.相关概念

:描述一组具有相同属性和行为的对象。
对象:分为两个特征:状态(state)和行为(behavior)。
对象为类的模板形式
状态:描述其所具有的属性,由变量实现,定义在类中没有被static修饰的变量称为成员变量实例变量
行为:描述相同事物特征发生的动作,由方法实现,定义在类中没有被static修饰的方法称为成员方法实例方法

2.面向对象思路

  • 一个问题中,涉及到哪些类,抽象出类。
  • 根据类的属性和行为,设计每个类——用变量描述属性,用方法描述行为——一个类里只有两样东西:变量定义方法定义
  • 用类生成对象。
  • 用对象调用类的方法实现程序功能。
  • 在这里插入图片描述

3.构造方法

  • 特殊的方法——方法名和类名一致,没有返回值。
  • 作用是生成对象,初始化对象。
  • 构造方法可以有多个,构成重载,目的是生成多样化的对象。
  • 类结构中还包含 构造代码块、静态代码块、内部类
    在这里插入图片描述
    4.对象生成的过程

Student s1=new Student( );
step1: 加载类——把Student类加载到内存,类变量、类方法进入内存
2.定义s1变量
3.new开辟空间,放入实例变量,并赋默认值
4.Student(),调用构造方法
5.赋值,右边赋值给左边,即空间首地址赋值给s1
6.s1叫做引用,空间叫做被引用对象,一般,简化说s1对象
7.当对象调用实例方法时,才会为实例方法分配入口(进入内存)
8.类变量和类方法通过类调用
9.实例方法通过对象调用
10.实例变量通过对象调用——但是,不这样做一般,所有实例变量一律私有化(private),然后提供set、get方法——封装性
在这里插入图片描述

5.类方法(静态方法)

静态方法只能调用静态方法与静态变量在这里插入图片描述

6.数据类型分类在这里插入图片描述
7.类与类库

因为系统类非常多,开发者也不同,所以造成了很多类重名
为了重名问题,设计了包的概念,把重名的类放入不同的包,所以不同包的同名的类相符不受影响
import关键字导入包
import java.util.Scanner;
import java.util.*;
java.lang这个包是默认导入的,System类属于这个包,所以用它时不用导入
在这里插入图片描述

8.访问修饰符
在这里插入图片描述
9.

  • 一个文件中可以有多个类,但是只能有一个是public的。文件名必须和public的类名一致,如果都没有public,文件名可以和任何一个类名一致
  • 一个类的修饰符,可以用public和默认,不可用private和protected,只有内部类可以用这两个
  • 每个类编译之后,都会生成一个class字节码文件
    -在这里插入图片描述
    在这里插入图片描述

10.继承

-子类是父类功能的扩展
-子类是父类的代码复用
在这里插入图片描述
在这里插入图片描述

11.抽象类及其子类

  • 包含一些共有的属性和行为与子类都有但具体实现不同的方法(称为抽象方法) 所组成的类,称为抽象类。
  • 父类抽象的方法必须要求所继承它的子类来实现
  • 抽象父类是一个管理者,负责统一管理子类。
  • 若当所有的子类已经部署完毕后,发现某属性遗漏,可直接通过在其抽象父类中添加后,所有子类都会被继承。
  • 抽象类的特点: 抽象类和抽象方法必须用abstract修饰、抽象类不能被实例化、抽象类中有构造方法用于子类实例化使用、如果一个类继承了抽象类,那个继承它的子类要么是抽象类,要么实现所有抽象方法。

12.多态

必要条件:1.有继承关系 2.子类覆盖父类的方法 3.父类指向子类

在这里插入图片描述

**上转型:**
Weapon[] weapons={new Tank("坦克",100),new Plane("飞机",500),new QianTing("潜水艇",1000,6000)};
		for(int i=0;i<weapons.length;i++)
		{
			weapons[i].attack();
			weapons[i].move();
		}

**向下转型:**
if(weapons[0] instanceof Tank){
			Tank tank=(Tank) weapons[0];
			tank.attack(60);
		}
  • 常见问题汇总

1.抽象类必须要有抽象方法吗?
不需要,抽象类不一定非要有抽象方法。
2.普通类和抽象类有哪些区别?
普通类不能包含抽象方法,抽象类可以包含抽象方法。
抽象类不能直接实例化,普通类可以直接实例化。

13.接口

  • 地位与类同级
  • 为了弥补单继问题,支持多重实现
  • 接口中的变量都为常量,方法都为抽象方法
  • 接口是提供某种服务或者功能的,一个类实现了这个接口,就代表具备了某种功能或者服务(如:一个人拿到了证书就具备了某种能力;银行开通某种服务等 )。
  • 一个类实现了某个接口就表示具备有这个接口所描述的方法,若不实现则可定义为抽象类;
  • 接口与实现接口的类没有直接关系,但父类与子类是有关系的,必须为同类;

14.

	//一、
   btnNewButton.addMouseListener(new listener());
>  class listener  implements MouseListener{

	@Override
	public void mouseClicked(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mousePressed(MouseEvent e) {
		// TODO Auto-generated method stub	
	}

	@Override
	public void mouseExited(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
	
}`
//二、
btnNewButton.addMouseListener(new MouseListener() {
			
			@Override
			public void mouseReleased(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void mousePressed(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}
		});//生成匿名内部类
//三、
btnNewButton.addMouseListener(new MouseAdapter() {//生成匿名对象
			@Override
			public void mouseClicked(MouseEvent e) {
				JOptionPane.showMessageDialog(null, "bbbbb", "a", HEIGHT);
			}
		});

15.IO输入输出流
>

1、数据流
硬盘和内存之间 ,10数据像流水一样来回流动
站在程序角度看 ,从内存到硬盘叫做输出 , 反之输入
2、字节流 1个字节
把数据流八位一分割 , 就形成了字节流 ,以字节为单位对文件进行读写叫做字节
FileInputStream 和FileOutputStream 以字节单位读写
BufferedInputStream 和 BufferedOutputStream 带缓冲区的读写
DateInputStream 和DateOutputStream 以数据类型为单位读写
ObjectInputStream 和 ObjectOutputStream 以对象为单位读写
3、字符流 1-3个自己 文本文件
把数据流按照字符编码格式分割 , 形成了字符流
字符编码: ACSii编码—— 8位,一个字节
unicode编码 ——统一码 2个字节 utf-8
gb2312—— 汉字编码 2个字节
编码 就是把计算机不认识的字符 ,比如字母 、数字 、汉字等用二进制表示
解码 上述编码的反过程
FileReader和 FileWriter 读写字符流文件的 会自动解码编码

16集合框架与泛型
在这里插入图片描述
在这里插入图片描述

1、集合
数组的作用是什么? 存储一组数据 int[] a = new int[5] 引用
数组缺点:必须事先指定数组大小 对象
很多情况是无法事先指定大小的——子弹的数量是无法事先指定的
集合: 存储一组数据,存储的是对象(不能存储基本数据类型) 存储的是对象的引用

2、种类
set集合 里面存放的对象是无序不重复
list集合 有序可重复
map集合 存放的是键值对

3、集合的用法
A 生成集合对象
B 往集合容器中添加对象add方法
C 需要时才能够集合容器中取出对象
Iterator it = set.iterator(); iterator叫做迭代器,专门负责从集合中取数据
List LinkedList 是用链表实现的 数据结构链表和数组的区别 list.get(1)
ArrayList 使用数组实现的 线性表和链表
Set HashSet 没有顺序
TreeSet 有顺序
这四个类都是集合容器,都可以存放对象,用法也基本相同都是collection的实现类
区别:先分出是list和set,在细分

A list集合有get方法 set没有
B java.util.ConcurrentModificationException
删除集合中的元素(对象),有两个方法:collection和iterator中都有remove方法
这两个方法都可以,但是注意,用了迭代器后,就不能再用collection的
C 集合只能存放对象的引用,如果存放基本数据类型,将会启动自动装箱,存放基本类型的包装类
java中都是类和对象,只有八个基本数据类型除外
int Integer 八种基本类型和对应的类可以实现自动转换,自动装箱、拆箱
double Double
D 集合可以存储不同类型,但是,一般不能这么做,一个集合只存储一类对象
泛型约束
ArrayList list = new ArrayList();
定义集合时一般都要加上泛型约束,控制一个集合只能存放一类对象

集合是一个容器,用来存放对象的引用——引用和对象的关系
第一,生成集合对象,设置好泛型
第二,用add方法添加对象
第三,用迭代器遍历集合

在这里插入图片描述

  • 对自己定义的对象使用集合时如HashSet,要在类中覆盖Object类中的三个方法;

Map的使用时,可以用其keySet()方法生成其键对应的Set集合,用其可进行遍历;

17.线程
在这里插入图片描述

  • 实现Runnable接口的线程类不能直接使用Thread类的start方法,必须把它包装成Thread类才可以,比如:
    Thread t =new Thread(new MyRunnable());
    t.start();
    而继承Thread类的线程类可以直接调用start方法。

t.start()会导致run()方法被调用,run()方法中的内容称为线程体,它就是这个线程需要执行的工作。
start()来启动线程,实现了真正意义上的启动线程,此时会出现异步执行的效果,即在线程的创建和启动中所述的随机性。
而如果使用run()来启动线程,就不是异步执行了,而是同步执行,不会达到使用线程的意义
————————————————
版权声明:本文为CSDN博主「smileTimLi」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_35275233/article/details/87896475

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图书详细描述: 本书将Java语言作为大学生的计算机程序设计入门语言,其特色是内容全面、深入浅出、辅助教材立体配套。不但详细介绍了Java语言本身,而且讨论了面向对象的设计思想和编程方法、UML建模语言、图形用户界面的编程方法、网络和数据库程序的编程方法、线程的使用、Java集合框架等实用开发技术。全书以面向对象的程序设计方法贯穿始终,基础性和实用性并重。本书不仅能使读者掌握Java语言,而且能够让读者对现实世界中较简单的问题及其解决方法用计算机语言进行描述。    本书既可供大专院校用作“Java语言程序设计”课程教材,也可供Java 爱好者作为入门的自学教材。 目录第1章 Java语言基础知识 1.1 Java语言与面向对象的程序设计  1.1.1 面向对象的程序设计思想  1.1.2 Java语言的特点  1.1.3 Java类库 1.2 Java程序概述  1.2.1 Java开发环境  1.2.2 Application举例  1.2.3 Applet举例  1.2.4 Servlet举例  1.2.5 JSP和JavaBean举例 1.3 基本数据类型与表达式  1.3.1 变量与常量  1.3.2 基本数据类型  1.3.3 表达式与运算符  1.3.4 类型转换 1.4 数组的概念 1.5 数组的创建和引用  1.5.1 数组的声明  1.5.2 数组的创建  1.5.3 数组元素的初始化  1.5.4 数组的引用  1.5.5 多维数组 1.6 本章小结 习题第2章 类与对象的基本概念 2.1 面向对象的程序设计方法概述  2.1.1 抽象  2.1.2 封装  2.1.3 继承  2.1.4 多态 2.2 类与对象  2.2.1 类的声明  2.2.2 对象的声明与引用  2.2.3 数据成员  2.2.4 方法成员  2.2.5 类的组织——包的概念  2.2.6 类的访问控制  2.2.7 类成员的访问控制 2.3 对象初始化和回收  2.3.1 构造方法  2.3.2 内存回收技术 2.4 应用举例  2.4.1 声明BankAccount类  2.4.2 声明toString()方法  2.4.3 声明存取款方法  2.4.4 使用DecimalFormat类  2.4.5 声明类方法生成特殊的实例  2.4.6 声明类变量 2.5 UML简介  2.5.1 类图  2.5.2 对象图 2.6 本章小结 习题第3章 类的方法 3.1 方法的控制流程  3.1.1 if选择结构  3.1.2 switch选择结构  3.1.3 for循环结构  3.1.4 while语句  3.1.5 do while语句  3.1.6 break语句  3.1.7 continue语句 3.2 异常处理简介  3.2.1 异常处理的意义  3.2.2 错误的分类  3.2.3 异常的处理  3.2.4 生成异常对象  3.2.5 声明自己的异常类 3.3 方法的重载 3.4 本章小结 习题第4章 类的重用第5章 接口与多态第6章 输入输出流第7章 对象群体的组织第8章 多线程第9章 图形用户界面第10章 JDBC与数据库访问第11章 Servlet程序设计第12章 JSP程序设计参考文献
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值