ITPub博客

首页 > 应用开发 > Java > 好程序员Java培训分享Java基础知识总结

好程序员Java培训分享Java基础知识总结

原创 Java 作者:好程序员 时间:2020-07-13 14:39:24 0 删除 编辑

  好程序员Java 培训分享 Java 基础知识总结

  1 JDK Java Development Kit java 的开发和运行环境, java 的开发工具和 jre

  2 JRE Java Runtime Environment java 程序的运行环境, java 运行的所需的类库 +JVM(java 虚拟机 )

  3 ,配置环境变量:让 java jdk\bin 目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。

 

环境变量的配置:

 

1) 永久配置方式: JAVA_HOME=% 安装路径 %\Java\jdk

 

path=%JAVA_HOME%\bin

 

2) 临时配置方式: set path=%path%;C:\Program Files\Java\jdk\bin

 

特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path 中设置的路径下找。

 

classpath 的配置 :

 

1) 永久配置方式: classpath=.;c:\;e:\

 

2) 临时配置方式: set classpath=.;c:\;e:\

 

注意:在定义classpath 环境变量时,需要注意的情况

 

如果没有定义环境变量classpath java 启动 jvm 后,会在当前目录下查找要运行的类文件 ;

 

如果指定了classpath ,那么会在指定的目录下查找要运行的类文件。

 

还会在当前目录找吗?两种情况:

 

CLASSPATH 是什么?它的作用是什么?

 

它是javac 编译器的一个环境变量。它的作用与 import package 关键字有关。当你写下 improt java.util.* 时,编译器面对 import 关键字时,就知道你要引入 java.util 这个 package 中的类 ; 但是编译器如何知道你把这个 package 放在哪里了呢?所以你首先得告诉编译器这个 package 的所在位置 ; 如何告诉它呢?就是设置 CLASSPATH :) 如果 java.util 这个 package c:/jdk/ 目录下,你得把 c:/jdk/ 这个路径设置到 CLASSPATH 中去!当编译器面对 import java.util.* 这个语句时,它先会查找 CLASSPATH 所指定的目录,并检视子目录 java/util 是否存在,然后找出名称吻合的已编译文件 (.class 文件 ) 。如果没有找到就会报错! CLASSPATH 有点像 c/c++ 编译器中的 INCLUDE 路径的设置哦,是不是?当 c/c++ 编译器遇到 include 这样的语句,它是如何运作的?哦,其实道理都差不多!搜索 INCLUDE 路径,检视文件!当你自己开发一个 package 时,然后想要用这个 package 中的类 ; 自然,你也得把这个 package 所在的目录设置到 CLASSPATH 中去! CLASSPATH 的设定,对 JAVA 的初学者而言是一件棘手的事。所以 Sun JAVA2 JDK 更聪明一些。你会发现,在你安装之后,即使完全没有设定 CLASSPATH ,你仍然能够编译基本的 JAVA 程序,并且加以执行。

 

PATH 环境变量

 

PATH 环境变量。作用是指定命令搜索路径,在命令行下面执行命令如 javac 编译 java 程序时,它会到 PATH 变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把 jdk 安装目录下的 bin 目录增加到现有的 PATH 变量中, bin 目录中包含经常要用到的可执行文件如 javac/java/javadoc 等待,设置好 PATH 变量后,就可以在任何目录下执行 javac/java 等工具了。

 

4 javac 命令和 java 命令做什么事情呢?

 

要知道java 是分两部分的:一个是编译,一个是运行。

 

javac :负责的是编译的部分,当执行 javac 时,会启动 java 的编译器程序。对指定扩展名的 .java 文件进行编译。生成了 jvm 可以识别的字节码文件。也就是 class 文件,也就是 java 的运行程序。

 

java :负责运行的部分 . 会启动 jvm. 加载运行时所需的类库 , 并对 class 文件进行执行 .

 

一个文件要被执行, 必须要有一个执行的起始点 , 这个起始点就是 main 函数 .

 

标示符:

 

1) ,数字不可以开头。

 

2) ,不可以使用关键字。

 

变量的作用域和生存期:

 

1. 变量的作用域:作用域从变量定义的位置开始,到该变量所在的那对大括号结束 ;

 

生命周期:变量从定义的位置开始就在内存中活了;

 

变量到达它所在的作用域的时候就在内存中消失了;

 

数据类型:

 

1) :基本数据类型: byte short int long float double char boolean

 

运算符号:

 

4) 、逻辑运算符。

 

& | ^ && ||

 

逻辑运算符除了 外都是用于连接两个boolean 类型表达式。

 

&: 只有两边都为 true 结果是 true 。否则就是 false

 

|: 只要两边都为 false 结果是 false ,否则就是 true

 

^: 异或:和或有点不一样。

 

两边结果一样,就为false

 

两边结果不一样,就为true.

 

& && 区别: & :无论左边结果是什么,右边都参与运算。

 

&&: 短路与,如果左边为 false ,那么右边不参数与运算。

 

| || 区别: | :两边都运算。

 

|| :短路或,如果左边为 true ,那么右边不参与运算。

 

5) 、位运算符 : 用于操作二进制位的运算符。

 

& | ^

 

<< >> >>>( 无符号右移 )

 

练习:对两个变量的数据进行互换。不需要第三方变量。

 

int a = 3,b = 5;-->b = 3,a = 5;

 

方法一:

 

a = a + b; a = 8;

 

b = a - b; b = 3;

 

a = a - b; a = 5;

 

方法二:

 

a = a ^ b;//

 

b = a ^ b;//b = a ^ b ^ b = a

 

a = a ^ b;//a = a ^ b ^ a = b;

 

练习:高效的算出 2*8 = 2<<3;

 

重载的定义是:在一个类中,如果出现了两个或者两个以上的同名函数,只要它们的参数的个数,或者参数的类型不同,即可称之为该函数重载了。

 

如何区分重载:当函数同名时,只看参数列表。和返回值类型没关系。

 

重写:父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)

 

Java 内存管理

 

Java 内存管理:深入 Java 内存区域

 

Java C++ 之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。

 

  概述:

  对于从事C C++ 程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权力的皇帝,又是从事最基础工作的劳动人民—既拥有每一个对象的 " 所有权 " ,又担负着每一个对象生命开始到终结的维护责任。

  对于Java 程序员来说,在虚拟机的自动内存管理机制的帮助下,不再需要为每一个 new 操作去写配对的 delete/free 代码,而且不容易出现内存泄漏和内存溢出问题,看起来由虚拟机管理内存一切都很美好。不过,也正是因为 Java 程序员把内存控制的权力交给了 Java 虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那排查错误将会成为一项异常艰难的工作。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69913864/viewspace-2704140/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-03-20

  • 博文量
    342
  • 访问量
    150004