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博客 ” ,链接:https://blog.itpub.net/69913864/viewspace-2704140/ ,如需转载,请注明出处,否则将追究法律责任。

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

注册时间:2019-03-20

  • 博文量
    342
  • 访问量
    195026