Java入门笔记(一)

一、

1.Java既可以开发web应用程序(网络应用程序),也可以开发手机应用程序,以及桌面应用程序。

2.Java的发展历程

Internet发展中的两次飞跃

1.www(以链接的方式连接起来)
2.java(将静态网页变成动态网页)

Java的出现

1990年 SUN“Green”–开发家用电器软件
1994年 Oak语言(橡树语言)
1995年 Java语言
SUN公布第一版编译器JDK1.0

Java学习纽带

C语言
Java语言
JDBC
JSP
Android
Xml
Java EE

Java的三大平台

Java SE 标准版 (J2SE)适用桌面应用
Java EE 企业版 (J2EE)适用网络/web应用
Java ME 微型版 (J2ME)适用手机应用

Java的开发工具包 JDK
Java的推动力主要是JCP(Java社区过程,集合多个公司和开发者参与制定文件)和JSR(Java的规范,不同的JSR有不一样的规范)

标题Java的地位

1.网络地位:Java的平台无关性让Java成为编写网络应用程序的佼佼者,Java也提供了许多以网络应用为核心的技术,是的Java特别适用于网络应用软件的设计与开发。

2.语言地位:学习Java语言不仅可以学习怎样使用对象来完成某些任务,也为今后进一步学习设计模式奠定好的语言基础。如今的Java已经和C语言有了一样的语言地位,是一门开发者必须掌握的基础语言。

3.需求地位:现在许多新技术领域都涉及Java语言,所以许多培训和招聘都需求Java软件工程师。

Java的特点

1.Java首先是一种编程语言
					①它是一种面向对象的编程语言(OOP)
					②它的语法结构与C和C++语言相似
					③Java所用的语法十分简单
2.特点
				    ①简单易学
				    ②面向对象
				    ③平台无关性(Java最大的特点之一)
				    		C、C++都有一个共同的缺点就是只能对特定的处理器(CPU)芯片进行编译。
				    		java的运行环境是JVM(Java虚拟机)、类库和一些核心文件组成。也就是说只要平台提供了Java运行环境(JRE),Java编写的软件就可以在上面运行。
				    		Java虚拟机的核心是字节码指令,即可以被Java虚拟机直接识别、执行的一种由0、1组成的序列代码。
				    		字节码并非机器指令,因为它不和特定的平台相关,它都不能被任何平台直接识别、执行。
				    ④安全稳定
				    ⑤支持多线程
				    			看似多线程运行同时完成了多个任务,实际上运行的只有一个,因为处理机可以在不同的线程之间快速切换,速度非常快,远超出了人接受信息的速度,才造成了多个任务同时执行的错觉。
					⑥动态:Java程序的组成基本单元就是类
								Java提供了大量的类以满足网络化、多线程、面向对象系统的需要:
								语言包
								实用程序包
								I/O包
								网络包
								图形用户界面包
								...
Java和C++的区别
	无直接指针操作
	自动内存管理
	数据类型长度固定
	不用头文件
	不包含结构和联合
	不支持宏
	不用多重继承
	无类外全局变量
	无GOTO
Java的三种核心机制

Java虚拟机(JVM)
代码安全性检测
垃圾收集机制

Java程序的编译与运行
源程序
字节码
JVM for Dos
JVM for Winx
JVM for Unix
Other

源程序到字节码文件后缀名为.java,是编译javac
经过编译javac转变为字节码(不是最终执行的代码,与平台无关)后形成.class文件进行运行java,之后字节码转化为设备虚拟机上进行执行。

Java虚拟机(JVM)

在一台计算机上由软件或硬件模拟的计算机。
Java虚拟机读取并处理经过编译过的字节码class文件
java虚拟机规范定义了:
指令集、寄存器集、类文件结构、堆栈、垃圾收集堆、内存区域

Java运行环境(JRE)

JRE=JVM+API(是一系列的库)

  • 三项主要功能
    加载代码、校验代码、执行代码
Java自动垃圾回收技术

在C/C++等语言中,是由程序员负责回收无用内存
Java语言自动垃圾回收:
系统级线程跟踪存储空间的分配情况
在JVM的空闲时,检查并释放那些可被释放的存储器空间
程序员无须也无法精准控制和干预该回收过程

JDK

JDK=JRE+Tools(运行环境+工具包)
JDK提供放入工具:
java编译器 javac.exe
java执行器 java.exe
文档生成器 javadoc.exe
对源程序生产一个文档,方便阅读,/** */ @xxxx是标记
java打包器 jar.exe jar cvfm A.jar A.man A.class(打包格式)
c表示创建,v表示显示详情,f表示指定文件名,m表示清单文件,A.man是清单文件,清单文件可以任意命名,常见的是MANIFEST.MF
jar文件大都是压缩文件
java调试器 jdb.exe
javaw 运行图形界面程序
javap 类名 可以查看类的信息
javap -c 类名 进行反汇编

Java的API文档
在线文档
http://docs.oracle.com/javase/8/docs/api/index.html
现在网页格式文档
doc.zip
另可以从网上搜索到chm格式的文档

JDK安装后的文件夹

Bin 该目录存放工具文件
JRE 该目录存放于java 运行环境相关的文件
Demo 该目录存放一些示例文件
Include 该目录存放和C相关的头文件
Lib 该目录存放程序库
Db 数据库相关

面向对象程序设计
  • 对象(object)
    对象具有两方面的含义:
    在现实世界中,是客观世界中的一个实体
    在计算机世界中,是一个可标识的存储区域
    (如:现实世界中的一本书,在计算机中存储就要记清楚他的作者、出版社等)

  • 类(class)
    类:具有共同属性和行为的对象集合
    属性:变量(字段)
    行为:函数(方法)
    类和对象的关系:
    类是对象的抽象(模板)
    对象是类的实例
    面向对象的三大特征:封装性、继承性、多态性

  • 封装
    模块化:将属性和行为封装在类中,程序定义很多类。
    信息隐蔽:将类的细节部分隐藏起来,用户只通过受保护的接口访问某个类。

  • 继承
    继承性:父类和子类之间共享数据和方法
    继承的好处:
    更好的进行抽象和分类
    增强代码的重用率
    提高可维护性

  • 多态(同一个程序,不同的行为)
    不同的对象收到同一个消息(调用方法)可以产生完全不同的效果
    实现的细节则由接收对象自行决定

分析
有哪些类
每个类之间有哪些属性哪些方法
类之间的关系如继承关联等
对象之间发送消息即调用方法
Java的开发步骤
使用编译器
产生
使用解释器
编写源文件
编译源文件
字节码
执行字节码
编写程序的一些小细节
  1. 左右{}的风格,多采用左右各一行
  2. 保存源文件时,有多个类,那么只能有一个public类,如果有一个类是public类,那么这个源文件的名字要与类名相同
  3. 保存源文件时一定要注意大小写,java语言是区分大小写的
  4. 保存类型是“所有文件”
  5. 编码选择为“ANSI”
  6. 在MS-DOS命令行窗口中进入某个子目录的命令是“cd 目录名”,退出某个子目录的命令是“cd…”
  7. dir可查询目录下内容
  8. 主类的写法:public static void main(String args[]){}
  9. args[]是main方法的一个参数,是一个字符串类型的数组
  10. 注意String,“S”的大写
  11. 主类漏写static是能够编译通过的,但是无法运行
    注释格式://xxxxxxxx(单行)
    /XXXXXXX/ (多行)
    ※不是每一个源文件都是由public类的
设定path和classpath

前者是命令的路径,后者是所要引用的类的路径
javac和java命令上使用-classpath或(-cp)选项可以引用别的库
javac -cp libxxx.jar 源文件名.java
java -cp libxxx/jar 类名

Application和Applet程序(JavaSE)

这两种程序的结构和运行环境不同
前者是独立的程序,需要执行器(调用虚拟机)来执行
后者是嵌在HTML网页中的非独立的程序,有专门的appletViewer来运行,或者是由Web浏览器(调用JVM)来运行(早期的Java)

public class HelloWorldApp{
     
	public static void main(String args[])
	{
     
	System.out.println("Hello World!")
	}
}

class是主体
public类名与文件同名
main()的写法是固定的
System.out.print 及println 及printf(format格式化显示)

import java.awt.*;
import java.applet.*;
import javax.swing.*;
public class HelloWorldApplet extends JApplet{
     
	public void paint(Graphics g){
     
		g.drawString("Hello World!",20,20);//后面是位置
	}
}


 An Applet


"HelloWorldApplet.class" width=200 height=40 background= black>



import表示导入 类
extends JApplet 表示继承
有paint()方法,表示如何绘制
没有main()方法
html中应用的是.class文件

package 语句(0或1句)程序所在的包,即路径
import 语句(0或多句)导入其他类的类库
类定义-- class(1或多个)一个文件只能有一个public类

类=类头+类体
类成员=字段+方法
字段是属性或变量
方法及函数
方法=方法头+方法体

applet的使用:
javac HelloWorldApplet.java
appletViewer helloworldApplet.html
会出现弹窗

输入与输出

应用程序(Java Appliction)的输入输出可以是文本界面,也可以是图形界面
小程序(Java Applet)则只能是图形界面
没中界面都有输入和输出

文本界面(使用Scanner类)
java.util.Scanner类
用nextInt()方法还有nextDouble()
next()得到下一个单词

import java.util.Scanner;
class ScannerTest{
     
	public static void main(String args[])
	{
     
		Scanner scanner = new Scanner(System.in);
		System.out.print("请输入一个数:");
		int a = scanner.nextInt();
		System.out.printf("%d的平方和是%d\n",a,a*a);
	}
}

jdk1.5版本前,使用的是java.io包
使用System.in.read() (输入)
System.out.print()或println\printf (输出)

	char c = " ";
	System.out.print("Please input a char :");
	try{
     
		c = (char)System.in.read();/*强制转换并显示,try{}catch,用于判断异常*/
	}catch(IOException e){
     }
	System.out.println("You have entered:" + c);
try{
     
	A in = new A(new B (System.in));/*本来是只能读写一个字符,进行封装后进一步加强功能*/
	s = in.readline();
}catch(IOException e)
	A in = new A(new B (System.in));
	System.out.print("Please input an int: ");
	s = in.readLine();
	n = Integer.parseInt(s);
	/*可直接读一行字符串的时候,使用Integer.parseInt(s)可以转化成一个整数,当然也可以用Double.parseDouble(s)来转化成一个实数*/
图形界面输入输出
在图形界面下,可以:
	使用文本框对象(TextField)获取洪湖输入的数据
	使用标签对象(Label)或文本框对象输出数据
	使用命令按钮(Button)来执行命令
Java Application图形界面输入和输出首先创建自己的图形界面
AppGraphInOut.java
通过创建一个Frame创建自己的用户界面,在构建AppFrame时,设定该Frame的大小,并用setVisible(ture)方法显示出来(extends是最好的方法)
{
     
	...
	/public void init(){
     
	setLayout(new FlowLayout());
	add(in);
	add(btn);/*加入对象*/
	add(out);
	btn.addActionListener(new BtnActionAdapter());//处理事件
}

class BtnActionAdapter implements ActionListener//接口
{
     
	public void actionPerformed(ActionEvent e)//具体处理事件
	{
     
		String s = in.getText();
		double d = Double.parseDouble(s);
		double sq = Math.sqrt(d);
		out.setText(d + "的平方根是:" + sq);
	}/*这段在java8中简写为btn.addActionListener(e-->{
			String s = in.getText();
			double d = Double.parseDouble(s);
			double sq = Math.sqrt(d);
			out.setText(d + "的平方根是:" + sq);
		});*/
}
Applet输入输出

{
     
	...
	setLayout(new FlowLayout());
	add(in);
	add(btn);/*加入对象*/
	add(out);
	btn.addActionListener(new BtnActionAdapter());//处理事件
}
class BtnActionAdapter implements ActionListener//接口
{
     
	public void actionPerformed(ActionEvent e)//具体处理事件
	{
     
		String s = in.getText();
		double d = Double.parseDouble(s);
		double sq = Math.sqrt(d);
		out.setText(d + "的平方根是:" + sq);
	}/*这段在java8中简写为btn.addActionListener(e-->{
			String s = in.getText();
			double d = Double.parseDouble(s);
			double sq = Math.sqrt(d);
			out.setText(d + "的平方根是:" + sq);
		});*/
}

同时作为Application和Applet的程序
是Applet的派生
含有main()
在main()中创建一个用户界面,并将这个Applet加入

继承开发工具

开发环境

  1. 直接使用jdk
  2. 文本工具+调用jdk命令
  3. 集成开发环境(IDE)

IDE中快速输入代码
在eclipse中
输入main再按Alt+/ 键,得到main函数
输入sysout再按Alt+/ 键,得到System.out.println("");
更多的可在Window-Preferences-Java-Editor-Templates查看

你可能感兴趣的:(Java,java)