Java day1

第一章 corejava的入门

一:什么是语言
语言=os+数据结构+算法+思想
os:操作系统
数据结构:队,栈,二叉树,链表
算法:做游戏开发时非常重要
面试题:int a>0,b>0只使用一条输出语句输出a,b的最大值
System.out.println((|a+b|+|a-b|)/2);

二:安装jdk

1)根据不同的操作系统下载不同的jdk
Java有三个版本:
Java SE:开发桌面应用程序,比如QQ
Java EE:开发企业级应用程序
Java ME:开发移动应用
2)安装jdk
如果是windows,直接双击
如果是unix,在shell中运行
a)拷贝到家目录
b)sudo chmod 777 /opt
c)cp jdk_8u32_liunx_i586.bin /opt
d)cd /opt
e)sudo ./jdk_8u32_liunx_i586.bin
如果是unix的.tar.gz文件:
a)将tar.gz拷贝到家目录并解压
b)sudo chmod 777 /opt
c)sudo mv jdk1.7.0_04 /opt
3)配置环境变量
在.bashrc中配置环境变量,打开该文件,追加内容
vi ~/.bashrc
//添加以下内容
CLASSPATH=.
JAVA_HOME=/opt/jdk1.8.0_32
PATH= P A T H : PATH: PATH:JAVA_HOME/bin
export CLASSPATH JAVA_HOME PATH
CLASSPATH指定类加载的路径
JAVA_HOME指定JDK的安装目录

三:JDK:java Development kit

Sun公司在推出Java语言的同时,也推出了Java的一系列开发工具, 如JDK—— Java Development Kit(Java开发工具包)。 可以从网上免费下载。通常以JDK的版本来定义Java的版本。 时间 版本 在Java标准函数库中的类(class)的数量


1996 JDK1.0(Java1.0) 250 重点applet
1997 JDK1.1(Java1.1) 500 比较适于开发图形界面
1998 JDK1.2(Java2) 2300 可达到平台原始速度,
可用于书写正规企业级应用程序或移动应用程序
2000 JDK1.3(Java2)
2002 JDK1.4(Java2) 计算能力大幅度提升
2004 JDK1.5(Java5.0)代号Tiger老虎3500 对语言本身作重大改变, 更稳定、更安全、更高效
2006 JDK1.6(Java6.0)代号Mustang野马
2009 JDK1.7(Java7.0)代号Dolphin海豚
2014 JDK1.8(Java8.0)
2009年04月20日,甲骨文74亿美元收购Sun。取得java的版权。

补充:JDK主要包括内容:
a)Java虚拟机:负责解析和执行Java程序.
Java虚拟机可运行在各种平台上
b)JDK类库:提供最基础的Java类及各种实用类。
这些类放在 J A V A H O M E / j r e / l i b / r t . j a r j a v a . l a n g , j a v a . i o , j a v a . u t i l , j a v a x . s w i n g , j a v a . s q l 包 中 的 类 都 位 于 J D K 类 库 中 。 c ) 开 发 工 具 : 这 些 开 发 工 具 都 是 可 执 行 程 序 . 主 要 包 括 : 位 于 JAVA_HOME/jre/lib/rt.jar java.lang, java.io, java.util, javax.swing,java.sql包中的类都位于JDK类库中。 c)开发工具:这些开发工具都是可执行程序. 主要包括:位于 JAVAHOME/jre/lib/rt.jarjava.lang,java.io,java.util,javax.swing,java.sqlJDKc):.JAVA_HOME/bin
javac.exe 编译工具;
     java.exe 运行工具;
javadoc.exe 生成JavaDoc文档的工具
jar.exe 打包工具等。

四: 理解Java语言特征;

Java语言包括语法规则和语法规则的实现。
Sun公司对Java语言有自己的一份参考实现:JDK。
a. 编程语言:语言本质即规则: 字符集、词法规则、句法规则(条件语句、循环语句等);桌面应用程序 :拥有图形化用户接口的软件;服务器应用程序:通过浏览器访问运行;
b. 开发环境:开发程序,不管是桌面应用还是服务器应用,均需要JDK的支持。
c. 应用环境:面向应用程序,而不是开发系统程序或者硬件编程,比如说驱动就是系统程序,系统程序一般用c语言
d. 部署环境:服务器应用程序需部署运行在服务器应用程序上,服务器本身也是一个Java程序,用Java语言编写的服务器应用程序部署运行时也需要Java语言的支持,将java代码打成一个包,部署到服务器这个过程叫做部署环境

五. 为什么发明Java?

为什么发明了java,换而言之,java有哪些优点呢?
a. 提供一个解释环境-----》JVM

  1. 加速开发: Java当初目的是开发适用于智能化电子消费设备上的软件,它是基于C++语言,但做了简化,能加速软件的开发过程
  2. 一次编译到处运行: 跨平台
  3. 多线程:多线程编程的简单性是Java成为流行的服务器端开发语言的主要原因之一
  4. 支持动态更新: 软件代码文件的替换即更新,
    类与类之间有调用,如果其中某
    一个改变不会影响其他程序。
    并且也不需要都编译打包。只需要做
    软件代码文件的替换操作。

b. 提供一个比较容易的方式编程
1) 更健壮:没有指针、没有内存管理;
在开发者层面上没有指针,但是在底层还是有指针。
Java引入了引用的概念。
C:malloc()手动分配内存,free()手动释放内存
C++:new手动分配内存,delete()手动释放内存
手动释放内存对内存回收比较好。但是也有
释放错误(释放一个已经释放的内存,
释放一个没有开辟的内存)
Java开发程序员不需要关心什么时候释放内存。
由GC垃圾回收器来管理内存的回收。
2) 纯粹的面向对象的编程:在Java中认为一切均是对象,
对象有属性以及改变属性值的方法。通过Java编程围绕
着构建对象的模板、实例化对象、调用对象的方法和属性等来进行。
c. 那么如何实现上面这些呢?
虚拟机JVM提供一个解释环境,让java代码可以运行。
垃圾回收机制让程序员无需在代码中进行内存管理。
代码安全校验保证java代码的安全性。

六. 理解Java虚拟机的特征;

Jvm是什么?简称java 虚拟机(java virtual machine),
是用软件来模拟一个虚拟的环境。我们用java编写的源程
序经过编译以后生成字节码文件,Jvm 提供了一个解释运
行 java字节码文件的环境,只要在不同操作系统上安装了
jvm后,就能对同一个java程序进行解释运行,这就java的
跨平台,一次编译,到处运行。

七. 描述垃圾收集的概念;

什么叫垃圾回收:
1)垃圾:无用对象所占据的内存空间;
2)垃圾回收:将无用对象所占据内存空间进行回收的过程;
3)为什么要垃圾回收?
对象创建,需要占用内存空间,在一个程序运行过程
中要创建无数个对象,如果对象永久占用内存,那么内存
很快会消费光,导致后续对象无法创建或者出现内存不足
的错误。因此必须采取一定措施及时回收那些无用对象的
内存,这样保证内存可以被重复利用。

C++等程序由程序员显示进行内存释放,这样有可能:
c:malloc() free()
c++:new delete

  1. 忘记内存释放,倒致无端的内存占用;
  2. 释放核心类库占用内存,倒致系统崩溃;

Java中垃圾回收处理:

  1. 由JVM虚拟机通过一个系统级别的垃圾回收器线程自动完成,
    不会忘记也不会释放错,系统更加稳定;

Java中垃圾回收处理特点:

  1. 由虚拟机通过垃圾回收器线程自动完成;
    是优先级别比较低的线程。没有办法去
    控制该线程运行。
    进程:是资源分配的最小单位
    线程:是程序运行的最小单位
    2)GC什么情况下工作:
    a)内存空闲时
    b)内存严重不足时
    3)只有当对象不再被使用,它的内存才有可能被回收;
    如果虚拟机认为系统不需要额外的内存,即便对象不再使用内存
  2. 程序无法显式迫使垃圾回收器立即执行垃圾回收,
    可以通过java.lang.System.gc()/java.lang.Runtime.gc()
    建议虚拟机回收对象;
    5)java.lang.System.gc()或者java.lang.Runtime.gc()
    都只是来通知系统应该处理垃圾

java中垃圾回收处理的算法:
1)标记清扫法:清扫所有的带有标记的垃圾。
不会整理内存。
不会进行数据的搬移,效率快
2)内存搬移法:将非垃圾的内存搬移到另外一块区域。
会整理内存
会进行数据的搬移,效率慢

八. 阐述Java平台代码安全实现策略;

Java虚拟机为Java程序提供运行时环境,
其中一项重要的任务就是管理类,
管理类的加载、连接和初始化;

  1. 加载:查找并加载类的二进制文件(class文件),将其置于内存中。
  2. 连接:
    a. 验证:确保被加载类的正确性(有正确的内部结构,并且与其他类协调一致);
    为什么要验证:Java虚拟机不知道某个特定的.class文件
    到底是由正常的Java编译器生成的,还是黑客特制的。
    类的验证能提高程序的健壮性,确保程序被安全地执行。

类验证内容:
. 代码和jvm规范一致:语法和版本是否兼容
. 代码不能破坏系统的完整性
. 没有堆栈的上溢和下溢
. 参数类型是正确的
. 类型转换的正确的

b. 准备:为类的静态变量分配内存,并将其初始化为默认值;
c. 解析:把类中的符号引用转换为直接引用(一个指向所调用方法在方法区内的内存位置的指针);
3) 初始化:给类的静态变量赋予正确的初始值;
即时编译器(JIT compiler,just-in-time compiler)
是一个把Java的字节码(包括需要被解释的指令的程序)
转换成可以直接发送给处理器的指令的程序。
8020规则:有80%的常用功能只用有20%的常用代码是经常使用的,
Inter公司。这个是个专业的人区完成的,完成之后会安装
在JVM中,我们使用就可以了。

九. 定义类、包和应用程序;

  1. Java的工作方式:

源代码: 编写Java源代码文件
|
编译器: 用编译器编译源代码。编译器会检查错误,如果有错就要改正才能产生正确的输出。
|
输出: 编译器会产生字节码。任何支持Java的装置都能够把它转译成可执行的内容。编译后的字节码与平台无关。
|
Java虚拟机: 可以读取与执行字节码。加载指定类,开始执行它的main方法,然后一直运行到main的所有程序代码结束为止。

  1. Java的程序结构:
    a. 源文件:包含Java代码(按java语法规则编写的内容)的文件;
    特征:1)以java作为后缀;
    2)可以包含多个类/接口;
    b.包的声明语句(可有可无,如有只能有一行,且位于最前面);
    包的命名规则:公司域名的倒写.组.功能
    package的作用:
    1)使用文件来进行层次管理的class
    2)在同一个包中不能出现相同的类名,避免命名冲突。
    3)一旦起了包名,类名就发生改变.
    包名.类名====>权限类名
    c.import语句(可有可无, 可有多行,紧跟着包的声明语句);
    d.public class类的声明
    1)类:Java代码组织的单位, Java代码都是以一个个类形式组织的。
    用Java语言编写程序其实就是编写一个个类;一个类里的语
    句内容用大括号括起来,一个类里带有零至多个方法。
    2)一个Java文件中只能有一个public class,可以有多个class
    3)public class修饰的类名必须和文件名一样
    4)类的内容语句,用大括号括起来:属性和方法
    e.public static void main(String[] args)
    1)方法:类似于其它语言里的函数或过程。
    方法里带有零至多行语句。
    2)方法的结构:
    修饰符 返回值类型 方法名字(参数列表){
    方法体(业务逻辑代码)
    }
    3)方法体,用大括号括起来
    4)main方法:Java虚拟机执行Java程序时,首先执行调用的方法。
    main方法又叫程序的入口方法或起点方法。不管你的程序有多大,
    不管你的程序有多少个类,一定都会有一个main()方法来作为程序的起点。

f.System.out.println():Java中输出语句
System是java.lang.System类
out是System中的内部类
println()是方法
g.Java的三大顶级元素:
package
import
class

  1. 剖析类:
    public class FirstJavaProgram{
    public static void main(String[] args) {
    System.out.println(“Hello Java, I am your fans!”);
    }
    }

     public:				公开给其它类存取;
    

    class: 类声明的关键字;
    FirstJavaProgram: 类的名称;
    void: 方法的返回值;
    main: 方法的名称;
    String[]: 数组类型;
    args: 参数名称;
    System.out.println: 打印到标准输出上(默认为命令行)
    “Hello Java, I am your fans!”: 要输出的字符串内容;
    ; 每一行语句必须用分号结尾;

十. 编码、编译以及运用Java应用程序;
1)编写:vi 类名.java
用记事本打开 类名.java
2)编译:
javac -d . src/类名.java
-d:指定编译后的class文件存放的路径。
编译时连同packge一起编译
3)运行:
java 包名.类名

jar -cvf ch01.jar com 将com打包成ch01.jar
jar -xvf ch01.jar

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值