Java学习笔记Day01 Java概述
第一章 Java概述
文章目录
- 第一章 Java概述
- 1.1.1 Java起源以及发展历程
- 1.1.2 Java语言简介
- 1.2.1 Java语言优势
- 1.2.2 Java应用平台
- 1.2.3 专有名词
- 1.2.4 Java跨平台原理
- 1.2.5 垃圾回收机制
- 1.3.1 JDK安装配置
- 1.3.2 JDK目录
- 1.3.3 JDK常用工具
- 1.4.1 对象(object)——一个可标识的存储区域
- 1.4.2 类(class)——具有共同属性和行为的对象集合
- 1.4.3 面向对象的三大特征
- 1.4.4 封装
- 1.4.5继承
- 1.4.6 多态
- 1.4.7 面向对象设计思想的要点
- 1.5 第一个Java程序
- 1.7 IDE集成开发环境
- 1.8 练习
- 总结
1.1.1 Java起源以及发展历程
Java语言出现在1995年
Java之父:James Gosling
官方网站:java.sun.com
1.1.2 Java语言简介
- 一种面向对象的编程语言(OOP)
- 它的语法结构与C和C++语言极为相似
- 所用的语法十分简单是C+ + - -
- 无直接指针操作
- 自动内存管理
- 数据类型长度固定
- 不用头文件
- 不包含结构和联合
- 不支持宏
- 不用多重继承
- 无类外全局变量
- 无GOTO
 
- 可以实现很多开发
- 面向对象的应用开发
- 各类网络应用程序的开发
- 计算过程的可视化
- 动态画面/交互操作
- Internet的系统管理
- 数据库操作
- And more ……
 
1.2.1 Java语言优势
- 资源免费
- 跨平台
- 健壮、安全
- 高性能
- 简单
- 面向对象
- 动态性
- 多线程
1.2.2 Java应用平台
- Java SE 标准版
- Java EE 企业版
- Java ME 微型版
1.2.3 专有名词
- 
JDK:Java开发工具包 JDK=JRE+Tools 
- 
JRE:Java运行环境 JRE = JVM + API(Lib ) 
- 
JVM:Java虚拟机 
- 
SDK:开发工具包 
JVM、JRE、JDK关系
1.2.4 Java跨平台原理
- JVM附着在句题的操作系统之上,将字节码转换为特定机器上的机器码,然后在特定的机器上运行。
一次编译随处运行流程
- Java字节码的跨平台使Java程序具有一次编译随处运行的特性,流程如下:
Java字节码执行方式
- 解释执行方式
- 即时编译方式(JIT)
1.2.5 垃圾回收机制
- 垃圾回收就是清理不再使用的对象时方可内存空间,Java程序的内存分配和回收都是由JRE在后台自动进行的。
- 垃圾回收的特点
- 内存优化
- 动态回收
- 回收的不确定性
- 占用系统开销
 
1.3.1 JDK安装配置
- 
步骤一:下载JDK 
- 
步骤二:安装JDK 
- 
步骤三:配置环境变量 需要配置的环境变量: JAVA_HOME=JDK安装文件位置 PATH=%JAVA_HOME%\bin CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
1.3.2 JDK目录
- bin:JDK包中命令及工具所在目录
- jre:运行环境目录
- lib:类库所在目录
- db:附带数据库目录
- include:包含本地代码的C头文件的目标
- src.zip:源代码压缩文件
1.3.3 JDK常用工具
- javac:Java语言编译器
- java:Java字节码解释器
- javadoc:文档生成器
- javap:Java字节码分解程序
- javah:Jni编程工具
- appletviewer:小应用程序浏览工具
- jar:打包程序
1.4.1 对象(object)——一个可标识的存储区域
Person p = new Person()
1.4.2 类(class)——具有共同属性和行为的对象集合
class Person{
    int age;
    String name;
    void sayHello() {…}
}
类和对象的关系
- 类是对象的抽象模板
- 对象是类的实例
1.4.3 面向对象的三大特征
- 封装性
- 继承性
- 多态性
1.4.4 封装
- 模块化:将属性和行为封装在类中,程序定义很多类
- 信息隐蔽:将类的细节部分隐藏起来,用户只通过受保护的接口访问某个类
class Person{
    private int age;
    private int getAge(){return age;}
    public void setAge(int a){age = a}
    String name;
    void sayHello(){…}
}
1.4.5继承
继承性:父类和子类之间共享数据合方法
继承的好处
- 更好地进行抽象和分类
- 增加代码的重用率
- 增加可维护性
//父类
class Person{
    int age;
    String name;
    void sayHello(){…}
}
//子类
class Student extends Person{
    String school;
    double score;
    void meetTeacher(){…}
}
1.4.6 多态
多态
- 不同的对象收到同一个消息(调用方法)可产生完全不同的效果
- 实现的细节由接收对象自行决定
1.4.7 面向对象设计思想的要点
- 认为客观世界由各种对象组成
- 程序的分析和设计都围绕着
- 有哪些对象类
- 每个类有哪些属性、哪些方法
- 类之间的关系(继承、关联等)
- 对象之间发出消息(调用方法)
 
1.5 第一个Java程序
1.5.1 Java程序的类型
Application程序
public class HelloWorldApp{
    public static void main(String args[]){
        System.out.println("Hello World");       
    }
}
- class是主体
- public类名与文件同名
- main()的写法是固定的
Applet程序
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);
    }
}
- import表示导入
- extends JApplet表示继承
- 由paint()方法,表示如何绘制
- 没有main()方法
Java程序的基本构成
- package语句(0或1句)
- import语句(0或多句)
- 类定义——class(1或多个)
- 一个文件智能有一个public类
 
- 类=类头+类体
- 类成员=字段(filed,属性,变量)+方法(method,函数)
- 方法=方法头+方法体
1.5.2 开发Java程序的基本步骤——编辑、编译与运行
- 源程序编辑
- 程序编译(javac)
- 程序运行(java工具——JDK)
- JDK安装后文件夹介绍
- bin:工具文件
- jre:运行环境
- demo:示例文件
- include:与C相关的头文件
- lib:程序库
- db:数据库相关
 
Application的编辑、编译与运行
- 
程序编辑:编辑器——文件名要与public class的类名一致 - 区分大小写
 
- 
程序编译——转换为字节码文件,拓展名.class javac hello.javajavac -d classes x1.java x2.java
- 
程序的运行——执行.class文件中的指令的过程 java hellojava -cp classes package
path和classpath的区别:
path是命令(javac,java)的路径,classpath是所要引用的类的路径
Applet的编辑、编译与运行
Java Applet程序必须嵌入到 HTML中,并由负责解释HTML 文件的 WWW 浏览器充当解释器,解释执行程序。
- 
源程序的编辑和编译 
- 
在HTML文件里嵌入Applet - 
使用标签: <applet code = "HelloWorldApplet.class"> width=200 height=40 background=white>
 
- 
1.6.1 输入输出
文本界面
- Scanner类
- java.util.Scanner包
 
- in&out
- java.io包
 
| 方法 | 特点 | 
|---|---|
| System.out.println() | 再打印后加上回车换行 | 
| System.out.print() | 连续打印 | 
- 
示例 public class PrintSample { public static void main(String[] args) { String s = "Hello"; char c = 'c'; System.out.println("String is:" + s); System.out.println("char is:" + c); } }
图形界面
- 使用文本框对象(TextField)获取用户输入的数据
- 使用标签对象(Label)或文本框对象输出数据
- 使用命令按钮(Button)来执行命令
示例
- add(xxxx)加入对象
- btn.addActonListener处理事件
- actionPerformed()具体处理事件
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class  AppletInOut extends java.applet.Applet
{
	TextField in = new TextField(10);
	Button btn = new Button("求平方根");
	Label out = new Label("用于显示结果的标签");
	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可以简写为e->{…}
		btn.addActionListener( e->{
			String s = in.getText();
			double d = Double.parseDouble( s );
			double sq = Math.sqrt(d);
			out.setText( d + "的平方根是:" + sq );
		});
	}
}
1.6.2 注释
- 
单行注释 - 
语法: //单行注释
 
- 
- 
多行注释: - 
语法: /*多行注释*/
 
- 
- 
文档注释 - 
语法: /**文档注释*/
 
- 
生成Java API文档
- 
编写文档注释后,可以通过使用“javadoc”提取文档注释生成Java API文档。javadoc命令基本语法格式如下: javadoc 选项 java源文件/清单文件
常用的javadoc标记
| 标记 | 作用 | 
|---|---|
| @auther | 指定程序的作者。用于类或者接口的注释。 | 
| @version | 指定源文件的版本。用于类或接口前注释 | 
| @deprecated | 不推荐使用的方法。用于方法的注释 | 
| @param | 方法的参数的说明信息。用于方法的注释 | 
| @return | 方法的返回值的说明。用于方法的注释 | 
| @see | “参见”,用于指定交叉参考的内容 | 
| @exception | 抛出异常的类型。用于方法的注释。 | 
| @throws | 抛出的异常,和exception同义 | 
1.7 IDE集成开发环境
- Eclipse,NetBeans
- IntelliJ IDEA
1.8 练习
案例分析
- 编写一个应用程序,验证以下等式是成立的:
- 找到更多的这样的整数:一些相续正整数的立方和正好等于另一个整数的立方。
小分析:第一问要问的是:给定一个区域[a,b]以及给定的一个数c要证明:
第二问则是给定一个区域[a,b],要求出整数c满足:
案例实现
- 
将变量封装在MathTest类中 封装示例:JavaBean public class ClassName { //成员变量 //构造方法 //无参构造方法 //*有参构造方法 //成员方法 //getxxx() //setxxx() }//MathTest.java public class MathTest { private int number; private int sum; /*public MathTest(){} public MathTest(int number,int sum) { this.number = number; this.sum = sum; }*/ public void setNumber(int number) { this.number = number; } /*public int getNumber(){ return number; }*/ public void setSum() { sum = (int) (sum + Math.pow(number,3)); //return sum; } public int getSum() { return sum; } }
- 
第一问:证明 import java.util.Scanner; public class Result { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("第一问:"); //输入区间下限a System.out.print("区间下限a:"); int a =scanner.nextInt(); //输入区间上限b System.out.print("区间上限b"); int b =scanner.nextInt(); //输入需要验证的结果c System.out.print("需要验证的结果c:"); int n =scanner.nextInt(); //调用MathTest类 MathTest test = new MathTest(); for(int i = a;i < b;i ++) { test.setNumber(i); test.setSum(); } for(int i = a;i <= b;i++) { test.setNumber(i); test.setSum(); } if (test.getSum() == n*n*n) { System.out.println("success"); } else { System.out.println("fail"); } } }
- 
第二问:在给定区域[a,b]上下限a,b的条件下,寻找满足的整数c。 由已知公式可知 
 
 变形可得:
 
- 
import java.util.Scanner; import java.math.BigDecimal; public class Result2 { public static void main(String[] args) { long millis = System.currentTimeMillis(); Scanner scanner = new Scanner(System.in); System.out.println("Q2:"); //输入区间下限a System.out.print("first number:"); int a = scanner.nextInt(); //输入区间上限b System.out.print("last number:"); int b = scanner.nextInt(); double m; m = (b * (b + 1)) * (b * (b + 1)) - (a * (a - 1)) * (a * (a - 1)); double c = Math.cbrt(m / 4); BigDecimal temp = new BigDecimal(c); c = temp.setScale(7, BigDecimal.ROUND_HALF_UP).doubleValue(); if (c - (int) c == 0) { System.out.println(a + "^3+" + (a + 1) + "^3+" + "……+" + b + "^3=" + (int) c + "^3"); } else { System.out.println("cannot find"); } long millis1 = System.currentTimeMillis(); System.out.println("计算所用时间:" + (millis1 - millis) + "毫秒"); } }
总结
- 
Java之父是詹姆斯•高斯林(James Gosling) 
- 
Java体系架构分3个平台:Java SE(基础)、Java EE(企业)和Java ME(微型) 
- 
JDK(Java Development Kit,Java开发工具包)是Sun公司提供的一套用于开发Java程序的开发包 
- 
JRE(Java Runtime Environment,Java运行环境)是运行Java程序所依赖的环境的集合 
- 
JVM(Java Virtual Machine,Java虚拟机)是一个虚构出来的计算机 
- 
Java是纯面向对象的编程语言,所有代码都在类体之内 
- 
Java是区分大小写的编程语言,Java程序的源代码文件是以.java为后缀 
- 
公共类的类名与Java文件名必须相同 
- 
程序必须要有main()方法才能运行,main()方法是整个程序的入口 
- 
Java源文件以.java为扩展名,编译后的字节码文件以.class为扩展名 
- 
使用javac编译.java文件,使用java运行.class文件 
- 
Java中的注释分为单行注释、多行注释和文档注释 
 
                
            
         
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号