JavaSE 拾遗(1)——JavaSE 面向对象程序设计语言基础(1)...基本概念和常识


在写面向对象语言基础部分之前先介绍一些 javase 开发相关的概念和常识

 javase 开发相关的概念和常识

  • 什么是软件、什么是软件开发 
  • javase 开发环境搭建相关:什么是jre、什么是jdk、什么是环境变量 path classpath
  • hello world 程序相关:什么是应用程序类

什么是软件

从计算机角度上看,软件就是数据和计算机指令的集合
从实现角度看,软件是数据结构和算法的集合
从产品角度看,软件就是一个我们设计的实现我们想要的功能的计算机产品,这些功能通常通过计算机指令对数据的处理来实现

什么是软件开发

软件开发分为好几个步骤,1.需求分析 2.系统建模 3.程序设计,其中程序设计就是指计算机编程,
从计算机角度看:编程是用语言和计算机进行沟通,一般是与编译器、计算机操作系统沟通,用汇编的话还可以与汇编器和cpu沟通
从产品角度看:编程好比作家写文章,好比建筑师设计房子,编程就是用已知的概念设计并实现一个产品,所以软件开发可以是一种艺术活动,可以是一种设计活动

从产品基本组成元素角度看编程的方法分为

面向结构主要是用结构来设计和表达产品

面向对象主要是用对象来设计和表达产品

函数式编程主要是用算法来设计和表达产品

从思考问题的整体局部角度看编程的方法分为分

自底向上
自顶向下——面相对象程序设计比较适合自顶向下的程序设计方法,也符合面向对象程序设计先抽象后具体、先整体后局部的原则,也是符合人类自然思考方式的方法,这样还有一个好处是不会因为底层细节的迭代而打断上层的设计和实现思路,应该分层以层为单位进行迭代,而不是以功能为单位进行迭代(OOP一个特性是谁拥有数据谁就拥有操作数据的方法?)
ps:面相对象思维方式
首先考虑整体,其次考虑局部
首先考虑抽象,其次考虑具体
首先确定谁来做,其次确定怎么做(这些思维方式都需要具体的示例来演示,以充分说明它们的含义,可以用张孝祥老师讲面向对象设计的那几个例子)


所以软件开发是一种富有 hacker 精神的创造性工作


什么是 jdk、什么是jre、什么是环境变量  path classpath


jdk, java development kit,又叫 java 开发工具包,java development tools + jre,其中包含 java 开发时所有需要的工具软件 比如编译工具 javac、打包工具 jar、反汇编工具 javap 等,因为这些工具都是用 java 语言开发的,所以还需要 jre 来支持这些工具的运行,这些工具对应的 class 文件在 jdk/lib/tools.jar 里面,如下图
JavaSE 拾遗(1)——JavaSE 面向对象程序设计语言基础(1)...基本概念和常识_第1张图片
jre,java runtime environment,java 运行时环境,里面包含 jvm 和 java 核心库,如很多现代编程语言一样,java 的跨平台性依赖于虚拟机技术,这好比 adobe 的 air 运行时、adboe flash player 运行时,microsoft 的 .net 运行时,当然 java 这方面是最先出来的。jvm 的边解释边执行技术结合了 编译器程序的运行时高效 和 解释器程序移植性高 两种方法的优点。

环境变量是操作系统运行时需要的一些参数,操作系统里面所有程序共用的属性(参数),环境变量通常是一系列键值对,键是字符串,存储环境变量的名,值通常也是字符串,存储环境变量的值。

Path 环境变量是操作系统的或者Shell的 "外部命令"搜索路径,java javac 等命令就依赖于path。

classpath 环境变量是类文件(*.class)搜索路径,javac 编译一个源文件时,需要读入依赖的 class 文件,java 执行一个程序时,也需要读入相应的 class 文件。classpath 就是 appClassLoader 加载类文件的搜索路径。
ps:java 命令先顺序查找 classpath 中指定的目录,再查找用户当前目录;classpath 结尾是否有 ; 符号决定 java 命令是否查找当前目录。ClassPath 就是 appClassLoader 加载 class 文件的时候使用的目录。
JavaSE 拾遗(1)——JavaSE 面向对象程序设计语言基础(1)...基本概念和常识_第2张图片
Javase 更详细的介绍看 这里

什么是应用程序类


面向对象程序设计认为所有东西都是对象,对象都用类来描述。所以一个 java 应用程序也是一个对象,描述这个 java 应用程序的类就是应用程序类,在这个类中有一个由 public static 修饰的 main 函数,在使用 java 命令执行这个程序的时候,java 虚拟机直接调用该类的 main 函数。这样就驱动了 java 世界运转。

——————————————华丽滴分割线————————————————————
windows 里面环境变量名字不区分大小写,linux 区分
path
    特点 :设置好后,只需要在运行栏和dos任意目录下输入程序名称便可以运行,不用当程序所在目录。
    如何使用:把程序所在目录位置,放入:windows属性---高级---环境变量---path栏下,并用分号与与其它的环境变量设置隔开。
    在dos窗口下,set 显示所有环境变量:
         set path 显示path环境变量的所有设置,
         set path= 在当前dos窗口下临时清除所有环境变量下的设置。
         set path=设置,这表示在当前窗口临时设置。会把之前path设置临时覆盖,
         如果要保留,则用分号隔开后,在后面加上%path% ,即引用变量。
         什么时候用:你想要把哪些目录下的程序在dos任意目录打开就去设置。
         在 dos 命令行下,执行顺序是先查找当前目录下是否有这个命令,再从左到右查找 path 中的路径。
classpath:需要查找当前目录是添加路径为. 符号 ,因为. 号就表示当前目录,在所有目录的后面加;号也会执行当前目录,如果在最后一个路径下不加;号,就不会查找当前目录,后面加分号,则搜寻完设置目录再搜寻本目录下。


win7下path误删
1、复制别的一份
2、 在JAVA语言搭建时进行path不小心删了系统内设的环境 有恢复的方法么?
        1)按win+R,输入regedit
        2)在注册表里,定位到HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001
           \Control\Session Manager\Environment
        3)你会看到一个名字叫path的值,你把这个值里面的内容复制
        4)进入系统高级设置,在环境变量里,添加系统变量,变量名输入path,变量值,就是所复制出来的内容,每台电脑的path都有些不一样,因为当你装某些软件时,这些软件会向你的path里写入新的目录。


问题:当不同盘符(C,D,E)下存在相同的.class文件的话:
JVM在启动的时候会先找环境变量classpath,后找当前目录
设置临时变量classpath=XX;和classpath=XX是有区别的;
当有“;”时,会首先从左到右查找 classpath 中包含的路径,如果找到执行,没找到再查找当前目录;
 而没有“;”只查找环境变量,如果没找到报错;
 所以配置时,不要加“;”,以免出现混乱
 变量:path是先找当前目录再找环境变量,classpath是先找环境变量然后找当前目录(如果配置时加了“;”)

为了方便 jdk 的路径的改变,可以配置 java_home 变量来保存 jdk 的 home 目录


 在配置CLASSPATH时,把"."放在前后都是一样的,就是先搜索后搜索目录的问题,包含了该目录后,就可以到任意目录下去执行需要用到该目录下某个类的 Java 程序(.class文件),即使该路径并未包含在 CLASSPATH 中也可以, “.” 就代表了该路径!

————————————————用javac编译带包定义的文件——————————————
package com.test;

public class Hello {
	public static void main(String args[]){
		System.out.println(“Hello Java”);
	}
}
Hello.java保存在D:\Java目录
编译时使用
javac Hello.java -d .\
刚在当前目录按照源码中的包设置建立目录,并将字节码文件放在里面,即生成D:\Java\com\test\Hello.class
运行时可在D:\Java路径下使用
java com.test.Hello
即可。

ps:技术活,环境变量设置 和 hello world 程序 需要练习至熟练。

 [原创文章,转载请保留或注明出处: http://blog.csdn.net/zhaoyw2008?viewmode=contents ]

你可能感兴趣的:(JavaSE 拾遗(1)——JavaSE 面向对象程序设计语言基础(1)...基本概念和常识)