一、JAVA入门

来源:互联网 发布:java未来五年发展前景 编辑:程序博客网 时间:2024/06/05 04:50


关于Java

前期知识

硬件,设备,软件,操作系统,应用软件。

编程语言是什么?c,c++,c#,java,php,pb,matlab,javascript

 

 

编程语言本质是用来做什么的?

 本质是:工具。

  1. 用编程语言实现我们美好的梦想。

  2. 赚钱。

    相识贵相知,相知贵知心。

 

学习好java我们可以做些什么?

 Java工程师

 JavaEE工程师

 Web工程师

 UI工程师

 Android工程师

 微信开发

 云计算Hadoop

 Java架构师

 

 

Java的由来和发展历程

Java创始人及java的由来:

 

 高斯林 c语言。1.内存溢出。2.exe不能跨平台

 

C语言  简化和修改。C--

编程语言  oak----爪哇岛JAVA  bean   javabean,netbean,entitybean

 

 

 

Java历史:

95年发布  Sun公司发布java  1.跨平台2.自动内存回收  

99SUN公司发布Java的三个版本:标准版(JavaSE,以前是J2SEStandard、企业版(JavaEE以前是J2EE)和微型版(JavaME,以前是J2MEandroid

Java1.1,java1.2 ,1.3

2004年发布java5   javase   javaee,javame  

2009年归oracle,并在2011年出来1.7版本  74亿美元CTO

2014319日,甲骨文公司发布java8.0的正式版

www.oracle.com

 

为何大家都在用java做开发?(什么特性吸引了他们)

简单:

C++语言等都有指针的概念,在java里面没有这个概念,并且由程序产生的内存被自动回收

当然更重要的还是后面学习的面向对象才有体现。对象完成所有工作。

 

Java跨平台:一次写好,处处运行。不需要针对每个使用者重新写一个程序。

95java一公布就受到热捧,并在此后迅速发展,成为最受欢迎的开发语言,恰好internet高速发展,java与网络天生搭档。最适合做b/s程序。BbrowserSserver

 

 

 

 

 

 

安全性:严格遵循面向对象的规范。这样封装了数据细节,只提供接口给用户。增加了数据级的安全性

无指针运算。java中的操作,除了基本类型都是引用的操作。引用是不能进行增减运算,不能被直接赋予内存地址的,从而增加了内存级的安全性。

数组边界检查。

 

 

面向对象(开发思维区别):与面向过程的c语言是有差别的。

造车。
面向过程,就是先造车轮,再造发动机,再造机壳。。。。。依次制造,造完前面的,才能造后面的。
面向对象,就是不分前后,造完所有的(车轮,发动机,机壳。。。),再组装起来。面向的是具体的事物。

银行卡

Class Card{

String cardNo;

Double banlance;

Public void deposit(){

 

}

Public void withdraw(){

 

}

 

 

}

 

Card a=New Card();

Card b=New Card();

a.withdraw(100);

 

 

垃圾回收c语言析构函数,回收变量占用的内存,java则是自动回收,不用担心内存溢出。

内存溢出:内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存

 

开放性:

Javajdk是完全开放的,所以他获得了巨大成功,不断使用java,不断改进java

 

Java语言的运行机制是什么?

 想想c语言咋整的?开发源代码------编译文件生成.obj二进制文件,和一些库文件结合成exe文件,这些文件都直接就是二进制机器码,并且跟当前操作系统有关。(与操作系统相关所以转到别的操作系统可能不能运行)----计算机运行

 

开发源代码----编译源文件生成中间字节码文件.class文件(不是二进制代码)-------jvm根据操作系统翻译该中间文件(这个文件与具体机器和操作系统无关)----机器指令---运行

 

安装一个虚拟机,jre,注意与jdk区别。包含与被包含的关系

Jre:java runtimeenvironment java运行时环境,包括了jvm

Jdkjava development kit  java开发工具包,为开发人员服务的。包含了jre

 

Jvm<  jre < jdk

 

 

 

Java编程初体验(重要)

Java环境搭建(其实就是要个能跑java程序的环境)

常用的dos命令:

cd---切换目录

notepad 文件名---创建记事本

mkdir 文件夹名称创建文件夹

 

dir-----显示文件列表

 

 

 

 

  1. 下载:java官网就是oracle官网。

http://www.oracle.com/technetwork/java/index.html

jdk-7u4-windows-x64.exe

 

  1. 根据操作系统位数安装对应版本,目前准备采用java1.7(注意32位和64位不同)

默认java安装完毕,会安装到C:\Program Files\Java\jdk1.7.0_04

 

  1. 设置环境变量

     

为何配置pathclasspath

设置path:因为我们的控制台要运行可执行文件,那么这个文件必须在当前目录下。

或者在path下。

.; 搜索当前目录  C:\Program Files\Java\jdk1.7.0_04\bin;自动搜索jdkbin目录

配置classpathC:\Program Files\Java\jdk1.7.0_04\lib 因为这个路径下面全部都是class文件

搜索当前目录,classpath配置的目录

 

  1. 写第一个java程序。HelloOracle.java

    public class  HelloOracle{

     

     

    //属性+功能

     

    public static void main(String[] args){

     

    System.out.println("Oracle,一个靠谱的平台!");

     

    }

     

    }

    任何一个java文件都必须定义一个类,类里面有一个main函数,这个函数就是程序执行的开始。

     

    Java编码规范:

    http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-139411.html

     

  2. 编译,运行

 

编译命令采用javac  HelloOracle.java

运行命令 java   HelloOracle

一定注意:javac后面跟的是java文件名和扩展名。Java后面跟的是java的类名。

Java运行的时候会用到jdk里面的库包lib。通过javaverbose:class可以清楚看到class

加载到内存的全部过程。

Java verbose:gc可以查看垃圾回收情况。

 

注意:如果你写的java程序放到某个包里面,要注意编译和运行的时候命令

注意:如果有包名  javac d:/test/com/action/HelloAction.java  假设HelloAction在包com.action

运行:java –classpath d:/test  com.action.HelloAction或者先切换到d:/test然后运行java com.action.HelloAction

 

 

Dos常用命令:

切换盘符,比如从c盘到d盘:d:回车

如果是相同盘符下面的路径切换:cd路径

直接在当前盘符路径下面建立一个java文件,notepad HelloOracle.java回车

查看当前路径下面的所有文件dir  

也可以查看以exe或者其他扩展名结尾的文件:dir *.exe回车

 

 

 

 

 

 

将生成的Hello.class演示跨平台。在Linux下是否运行。

 

 

 

 

编程工具IDE使用(integrated development enviroment

 免费的,出现是因为java当时比较火。IBM公司投巨资开发eclipse日蚀 java sun

 

Eclipse  keplergalio

工具一:Eclipse Kepler版本下载

http://www.eclipse.org/downloads/

 

使用:

解压即可。进入eclipse文件夹点击exe文件,运行即可。

 

 

 

 

 

 

 

 

 

工具二:NetBeans

https://netbeans.org/downloads/

 

 

 

近期部分企业采用的: IntelliJ IDEA—适合开发复杂项目,提示智能化。但是商业版都是收费的,也有社区版。

 

探索一下虚拟机做了些什么

 

javap  c XXX.class生成一个jvm指令集组成的方法体集合。

 

 

 

 

 

 

 

 

 

Java被编译之后class文件分为头部和常量区。

头部包含Java的版本信息,以16进制打开。

 

每个class文件的头4个字节称为魔数(Magic Number),其值为:0xCAFEBASE,它的唯一作用是用于确定这个文件是否为一个能被虚拟机接受的class文件。使用魔数而不是扩展名来进行识别主要是基于安全的考虑,因为文件的扩展名可以随意地被改动。

 

如果被篡改魔数会出现java.lang.ClassFormatError: Incompatible magic value 3305028286 in class file Hello

 

魔数后面跟的就是版本号。用的1.7所以应该是51,十六进制应该是33.

 

public class ClassTest {

        private String itemS ="我们 ";

        private final int itemI =100 ;

        public void setItemS (String para ){...}

}

而这些在JVM解释执行程序的时候是非常重要的。那么编译器将源程序编译成class文件后,会用一部分字节分类存储这些永恒不变的红色东西。而这些字节我们就成为常量池。事实上,只有JVM加载class后,在方法区中为它们开辟了空间才更像一个

 

正如上面所示,一个程序中有很多永恒的红色东西。每一个都是常量池中的一个常量表(常量项)。而这些常量表之间又有不同,class文件共有11种常量表,如下所示:

常量表类型

标志值(1 byte)

描述

CONSTANT_Utf8

1

UTF-8编码的Unicode字符串

CONSTANT_Integer

3

int类型的字面值

CONSTANT_Float

4

float类型的字面值

CONSTANT_Long

5

long类型的字面值

CONSTANT_Double

6

double类型的字面值

CONSTANT_Class

7

对一个类或接口的符号引用

CONSTANT_String

8

String类型字面值的引用

CONSTANT_Fieldref

9

对一个字段的符号引用

CONSTANT_Methodref

10

对一个类中方法的符号引用

CONSTANT_InterfaceMethodref

11

对一个接口中方法的符号引用

CONSTANT_NameAndType

12

对一个字段或方法的部分符号引用

 

 

 

 

 

0 0
原创粉丝点击