基本知识
1.系统软件:直接和硬件交互的软件(操作系统)如windows10,Linux
2.应用软件:通常用行在系统软件 ,如QQ在系统软件上
3.软件开发:一般都是指使用计算机编程语言完成应用软件开发
*常见的Dos命令
- exit 退出当前窗口
- cls 清屏
- Dos'中内容怎么复制:
在Dos中的任意位置点击鼠标右键,然后选择标记,
接下来选中复制内容,在Dos窗口中点击鼠标右键则完成复制。
— dir 列出当前目录下所有子文件
— cd 命令表示:改变目录
— cd .. 回到上一级目录
— cd 直接回到根目录
— d: 回车 切盘
解决Dos中命令不可用 ,windows操作系统是如何搜索硬盘上某个命令的呢?
1.先会从当前目录下搜索
2.当目录搜索不到的话,从环境变量path指定的路径当中搜索命令
3.如果都搜索不到则以上报错
所以配置环境变量,专门给Windows操作系统指路
数据类型
1.四大数据类型分类:
整型:byte 、short 、int 、long 浮点型:float 、 double 字符型char (基本类型)
布尔型:boolean( 它的取值就两个:true 、false,boolean 类型与其他7中类型的数据都不能进行转换) 。
2.基本类型之间的转换
自动转换(隐式):无需任何操作。
强制转换(显式):需使用转换操作符(type)。double > float > long > int > short > byte
如果从低转换到高,那么可以直接转换,而从高到低,或char 和其他6种数据类型转换,则必须使用强制转换。
拓展知识点:Java是面向对象语言,其概念为一切皆为对象,但基本数据类型算是个例外哦,
基本数据类型大多是面向机器底层的类型,它是 “值” 而不是一个对象,它存放于“栈”中而不是存放于“堆”中,
但Java一切皆为对象的概念不是说说而已,它为每一个基本数据类型都做了相应的包装类。
对于Java基本结构有了基本的认识,能写出简单的输出;
先说说学习方法部分
首先要能勾起兴趣
能够结合 生(游)活(戏) 中的实例来学习,就最好不过了,一来最好就让我知道这个学习目的是什么,不要一开始就太多理论,让我云里雾里,消磨掉耐心和动力,另一个学习方法就是理清讲解思路,让自己有全局观。初学Java,很多知识点脑海中也只剩下一个名词,具体讲了什么已经记不得!做笔记长远来看是最省时间的。因为笔记内容都是自己消化过的,后期不用再去看视频复习(太麻烦了),直接看自己的笔记效率更高!反而蜻蜓点水,不做笔记一味求快的人,学到后面跟不上。因为这些知识点你只是听懂了,而不是理解,也没有实际编码操作过,印象是不深的,但是思维导图要自己做,自己看,效果最好。看别人的基本没效果。
2、因为上学期学习了C语言,在这周运算符的学习上,也有了更好的认识与了解。如:明白了逻辑运算符短路与&&和短路或||的一些区别;学习了位操作符左移位与右移位。
3.了解了正数与负数的反码与补码。
4.了解简单移位实现功能代码的编写(运用二进制转换移位)。
5.对以前的for循环、while循环、switch循环有了一定的复习。
构造方法
类名称 对象名称=new 类名称 ()
构造方法的名称必须与类名称一致;
构造方法的声明处不能有任何返回值类型的声明;
不能在构造方法中使用return 返回一个值。
this调用本类构造方法必须放在首行,不能循环
this+成员变量有四个作用
1.强调调用本类方法
2.表示类的成员属性
3.调用构造方法
4.表示当前对象
当前对象指的是正在调用的对象
static声明属性,将静态属性共享为公共属性
java中常用的内存区域
1.栈内存空间:保留所有的对象名称(准确说是保留了堆内存空间的地址)
2.堆内存空间:保留每个对象的具体属性内容
3.全局数据区:保留static的属性
4.全局代码区:保留所有方法定义
static方法定义的说明
1.本类没有提供有普通属性,这样产生实例化对象没有意义;
2.本类无法直接进行对象实例化,只能够利用static操作;
说明:非static声明的方法可以去调用static声明的属性或方法,但static声明的方法不能调用非static类型声明的属性或方法。
static类型的方法在对象未被实例化时就可以被类名所调用。
一.实验目的
(1)掌握类的继承
(2)变量的继承和覆盖,方法的继承,重载和覆盖的实现;
二.实验的内容
(1)根据下面的要求实现圆类Circle。
1.圆类Circle的成员变量:radius表示圆的半径。
2.圆类Circle的方法成员:
Circle():构造方法,将半径置0
Circle(double r):构造方法,创建Circle对象时将半径初始化为r
double getRadius():获得圆的半径值
double getPerimeter():获得圆的周长
void disp():将圆的半径和圆的周长,圆的面积输出到屏幕
抽象类的使用
设计一个类层次,定义一个抽象类--形状,其中包括有求形状的面积的抽象方法。 继承该抽象类定义三角型、矩形、圆。 分别创建一个三角形、矩形、圆存对象,将各类图形的面积输出。
注:三角形面积s=sqrt(p(p-a)(p-b)*(p-c)) 其中,a,b,c为三条边,p=(a+b+c)/2
2.编程技巧
(1) 抽象类定义的方法在具体类要实现;
(2) 使用抽象类的引用变量可引用子类的对象;
(3) 通过父类引用子类对象,通过该引用访问对象方法时实际用的是子类的方法。可将所有对象存入到父类定义的数组中。
练习捕获异常、声明异常、抛出异常的方法、熟悉try和catch子句的使用。
掌握自定义异常类的方法。
编写一个类,在其main()方法中创建一个一维数组,在try字句中访问数组元素,使其产生ArrayIndexOutOfBoundsException异常。在catch子句里捕获此异常对象,并且打印“数组越界”信息,加一个finally子句,打印一条信息以证明这里确实得到了执行。
自定义异常类的使用
编写一个Exgeption的子类DangerException,该子类可以创建异常对象,该异常对象调用toShow()方法输出“危险物品”。编写一个Machine类,该类的方法checkBag(Goods goods)当发现参数goods是危险品时(goods的isDanger属性是true)将抛出DangerException异常。
程序在主类的main()方法中的try-catch语句的try部分让Machine类的实例调用checkBag(Goods goods)的方法,如果发现危险品就在try-catch语句的catch部分处理危险品。
多线程
1.这一周我们接着上一周的多线程学习了实现Runnable接口,上一周中学习了Thread类,thread类实现的是多线程,但是这个还是很局限的,而Runnable接口是用来实现资源共享同时也可以通过Runnable接口的方式实现多线程。
Java IO
操作文件的类——File
在整个IO包中,唯一表示与文件本身有关的类就是File类,使用file类可以进行创建或删除文件等常用操作。
流的概念
1.1、程序中所有的数据都是以流的方式进行传输或保存的
1.2、程序需要读取数据的时候要使用输入流读取数据,而当程序需要将一些数据保存(写)到磁盘的时候,就要使用输出流完成。
1.3、切记:程序是内,文件...是外
二、流的超类
2.1、字节流的超类:InputStream、OutputStream
作用:处理字节、二进制对象。(其实可用于任何类型的对象,但它不能直接处理Unicode字符)
操作对象:字节流处理单元为1个字节,操作字节和字节数组
2.2、字符流的超类: Reader、Writer
作用: 直接处理字符、字符串。
操作对象:处理的单元为2个字节的Unicode字符
拓展:字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的
2.3、用途推荐
音频文件、图片、歌曲,就用字节流好点
关系到中文(文本)的,用字符流好点
2.4、前言:
其实前言放在这里,笔者认为是不合适的,之前的铺垫只是方便读者快读进入状态
字节流和字符流的关系:
字节流不足:实际开发中很多的数据是文本,字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,于是提出了字符流的概念。
字符流的诞生:字符流按虚拟机的encode处理,也就是通过InputStreamReader,OutputStreamWriter进行字符集的转化
转化(注:初学者可以不看该转化知识,如果想了解原理,该段是有帮助的):
InputStreamReader:用于将一个字节流中的字节解码成字符,其构造函数
InputStreamReader isr = new InputStreamReader(InputStream in)的参数是一个InputStream对象 / System.in,用 对象.read(char[] data),的方式获取内容
OutputStreamWriter:用于将写入的字符编码成字节后写入一个字节流,其构造函数(之一)
OutputStreamWriter osw = new OutputStreamWriter(OutputStream out)是一个OutputStream对象,通常用对象.write(String str)的方式写到 对象绑定的输出流上。
二者都是处理流(包装流、非结点流)---不可直接操作数据!。由上可知二者底层分别是通过byte[]和String来关联它们对应的流对象!
三、字节流与字符流的区别
3.1、操作文件时的区别:
字节流:在操作时不会用到缓冲区(内存),是直接对文件本身进行操作的
字符流:在操作时则使用了缓冲区,通过缓冲区再操作文件。
3.2、存在形式区别:
在硬盘上的所有文件都是以字节形式存在的(图片,声音,视频),而字符值在内存中才会形成
1.JPanel:默认流式布局管理器。
JPanel可以完成各种复杂的界面显示,可以加入任意组件,在直接将JPanel容器加入到JFrame容器中即可显示。
JSplitPane:主要功能是分割面板,可以将一个窗体分为两个窗体,可以使垂直排列,也可以是水平排列。
3.JTabbedPane:是在一个面板上设置多个选项卡供用户选择。
4.JScrollPane:主要功能是为显示的内容加水平滚动条。由JVieport和JScrollBar组成,前者主要是显示一个矩形
的区域让用户浏览,后者主要是形成水平或者垂直的滚动条。
5.JDesktopPane与JInternalFrame:前者规定了一个父窗体的基本形态,后者规定各个子窗。
二、时间处理
1.事件和监听器:事件就是表示一个对象发生状态变化,事件的监听器:都是以接口的形式出现。
2.窗体事件:
WindowListerner:是专门处理窗体监听器的监听接口。
键盘事件及监听处理
在Swing的事 件处理中也可以使用KcyListcner接口对键盘的操作进行监听。
MouseEvent
在每个事件触发后都会产生MouseEvent事件,此事件可以得到鼠标的相关操作。
鼠标拖拽事件及监听处理
在一般的图形界面中经常可以看到鼠标拖拽操作的情况在Swing中可以使用MouseMotionListener接口完成鼠标的拖拽操作。
单选钮JRadioButton
单选钮就是在给出的多个显示信息中指定选择一个,在Swing中使用JRadioButton完成一组单选钮的操作。
JRadioButton事件处理
单选按钮操作中,使用ItemListener接口进行事件的监听。
菜单组件
使用JMenu组件可以实现菜单。JMenuBar组件的功能是用来摆放IMenu组件,当建立完多个JMenu组件之后,需要通过JMenuBar组件将JMenu组件加入到窗口中。
文件选择框JFileChooser
在使用记事本或者word等软件的时候,可以通过文件选择框选择要打开或保存的文件。在Swing中可以使用JFileChooser组件实现此功能。
实验报告:
package Demo;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import javax.swing.ImageIcon;
import javax.swing.JFrame ;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax. swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
public class Notepad {
public static void main (String[] args) {
JFrame frame = new JFrame ("Welcome To MLDN") ; // 定义窗体
JTextArea text = new JTextArea () ; //定义文本域
text. setEditable (true) ;//定义文本组件可编辑
frame . getContentPane () .add (new JScrollPane(text)); // 在面板中加入文本框及滚动条
JMenu menuFile = new JMenu ("文件") ;//定义JMenu组件
menuFile. setIcon (new ImageIcon("d:" + File. separator + "icons"+ File.separator + "file.gif")) ;//定义显示图标
JMenuBar menuBar = new JMenuBar () ;//定义JMenuBar
JMenuItem newItem = new JMenuItem ("新建",new ImageIcon("d:" + File. separator + "icons" + File. separator + "new.gif")) ; //创建JMenuItem
JMenuItem openItem = new JMenuItem("打开",new ImageIcon("d:" + File. separator + "icons"+ File. separator + "open.gif")) ; //创建JMenuI tem
JMenuItem closeItem = new JMenuItem ("关闭" ,new ImageIcon("d:" + File. separator + " icons"+ File. separator + "close.gif")) ; //创建JMenuI tem
JMenuItem exitItem = new JMenuItem ("退出",new ImageIcon("d:" + File. separator + " icons"+ File. separator + "exit.gif")) ; //创建JMenuI tem
newItem.setMnemonic('N') ; //设置快捷键N
openItem.setMnemonic('O') ; //设置快捷键O
closeItem.setMnemonic('C') ; //设置快捷键C
exitItem.setMnemonic ('E') ;//设置快捷键E
newItem.setAccelerator (KeyStroke.getKeyStroke('N',java.awt.Event.CTRL_MASK)); //Ctrl+N
openItem.setAccelerator (KeyStroke.getKeyStroke('O',java.awt.Event.CTRL_MASK)) ; //Ctrl+0
closeItem.setAccelerator (KeyStroke.getKeyStroke('C',java.awt . Event.ALT_MASK) ) ;//Alt+C
exitItem.setAccelerator (KeyStroke.getKeyStroke('E',java.awt .Event.ALT_MASK) ) ;//Alt+E
menuFile.add (newItem) ;//Alt+E
menuFile.add (newItem) ;//加入菜单项
menuFile.add (openItem) ;//加入菜单项
menuFile.add (closeItem) ;//加入菜单项
menuFile.addSeparator () ;//加入分隔线
menuFile.add (exitItem) ;//加入菜单项
menuBar.add (menuFile) ;//加入JMenu
frame.addWindowListener (new WindowAdapter () {//加入事件监听
public void windowClosing (WindowEvent arg0) { // 覆写窗口关闭方法
System.exit(1) ;
}});//系统退出
frame . setJMenuBar (menuBar) ;//在窗体中加入.JMenuBa r组件
frame . setVisible (true) ;//显示组件
frame. setSize(300,180) ;//定义窗体大小
frame. setLocation(300,200) ;//设置显示位置
}
}