java期末复习-第一章

第一章

1.搭建环境

JAVA_HOME : jdk的安装路径
Path %JAVA_HOME%\bin
命令行执行程序时,会到PATH变量所指定的路径中查看是否能找到相应的命令程序,
JDK的bin目录下有各种Java程序需要用到的命令javac/java/javadoc等,把bin目录增加到现有的PATH变量中,那么在执行的时候,系统自动去找javac/java/javadoc,找到后就执行.
CLASSPATH .;%JAVA_HOME%\lib;
开头的 “.;”,告诉JDK,搜索CLASS时先查找当前目录的CLASS文件
比如我们执行java test
首先自动在PATH环境变量里寻找java命令
找到了命令,开始执行,寻找test.class文件
根据CLASSPATH环境变量,先到当前目录寻找
CLASSPATH是告诉jvm要使用或执行的class放在什么路径上,便于JVM加载class文件,Jdk1.6以后就不需要配置了
C:\Program Files\Java\jdk-11.0.2\bin\server\jvm.dll java的虚拟机文件
path是操作系统用 ,classpath是java编译器用
path是所要引用的类的路径 ×
classpath是所要引用的类的路径 √

2.JDK && JRE

如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。
JRE包括JVM及API,只是一个运行环境而已,与开发无关
JDK是Java的开发工具,它不仅提供了Java程序运行所需的JRE,还提供了一系列的编译,运行等工具,如javac,java,javaw等。JRE只是Java程序的运行环境,它最核心的内容就是JVM(Java虚拟机)及核心类库
开发的实际情况是:我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。

3.jar包

jar包就是别人已经写好的一些类,然后将这些类进行打包,你可以将这些jar包引入你的项目中,然后就可以直接使用这些jar包中的类和属性以及方法。
jar命令是随jdk自动安装的,在jdk安装目录的bin目录下

当我们开发了一个程序以后,程序中有很多的类,如果需要提供给别人使用,发给对方一堆的源文件是非常不好的,通常需要把这些类打包成一个 JAR 包,把这个 JAR 包提供给别人使用,只需要别人在CLASSPATH 环境变量中添加这个 JAR 包,则 Java 虚拟机就可以在内存中解析这个 JAR 包了,这个 JAR 包就是一个路径,就像我们电脑访问普通文件一样, Java 虚拟机会根据路径查找相应的文件.

4.Javac.exe java.exe

先编译 .java文件――――>.class文件
运行 *.class ――加载――> JVM
jvm加载二进制文件
javac编译后得到的class文件是二进制指令,但不是机器指令,而是java虚拟机可识别的指令
java是启动jvm,jvm负责对class文件的内容进行处理,将字节码文件解释或者编译为机器指令,执行。
编译包程序
C:\Users\asus\Desktop>javac -d . Pack.java
C:\Users\asus\Desktop>java 编译包程序/Pack
C:\Users\asus\Desktop\编译包程序>java Pack cd进去反而不对
错误: 找不到或无法加载主类 Pack
原因: java.lang.NoClassDefFoundError: 编译包程序/Pack (wrong name: Pack)
5.Java的源程序
java中源文件的后缀为.java,经过javac.exe编译后生成字节码文件,后缀为.class,再经过java.exe编译为可执行文件,后缀为.exe
6.java中的类
Public 或者 不加修饰符

7.main方法

main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,但是static代码块(不是方法)的内容会在main调用前调用. 类的定义只能限制为public或者无限制关键字(默认的)。有main()方法的类不一定非得是public. 有main()方法,说明这是个java应用程序,通过JVM直接启动运行的程序.
public static void main(String args[]) 为什么要这么定义,和JVM的运行有关系。当一个类中有main()方法,执行命令“java 类名”则会启动虚拟机执行该类中的main方法。调用时不实例化这个类的对象,而是通过类名直接调用因此需要是限制为public static.main方法定义为static的,则对于虚拟机来说,在程序启动之后并不需要创建一个实例,也就可以去调用这个main方法。
而如果main方法不定义为static的话,虚拟机就需要设计成去new一个包含main方法的类的实例,再去调用这个main方法。这个时候就会存在一个问题,若这个类存在不止一个构造方法,虚拟机是无法决定使用哪个构造方法去创建实例的.
jvm有限制main方法不能有返回值,因此返回值类型为void。void是java的main方法的返回值,理解返回值应该从方法调用者的角度去理解,java的main方法的调用者是java虚拟机,而java虚拟机在启动java程序时,只需要调用main方法,而不需要此方法返回任何的值,因此,main方法被设计为void的.一个输入参数,类型为String[],接收命令行输入参数的,命令行的参数之间用空格隔开,main()方法中必须有一个入参,类型必须String[],至于字符串数组的名字,这个是可以自己设定的,根据习惯取名为args。
在Java中声明为public的任何方法或变量都可以从该类的外部访问。 而JVM访问main方法显然不是在类的内部访问,因此main方法需要定义为public的方法
main()方法中可以抛出异常,main()方法上也可以声明抛出异常

8.Args的含义,args.length

Args 接收命令行输入参数
Args.length 表示传入参数的个数

9.数据类型

byte b1=1,b2=2,b3,b6,b8;
final byte b4=4,b5=6,b7;
b3=(b1+b2); /语句1/
b6=b4+b5; /语句2/
b8=(b1+b4); /语句3/
b7=(b2+b5); /语句4/
System.out.println(b3+b6);
下列代码片段中,存在编译错误的语句是()

byte b1=1,b2=2,b3,b6,b8;
final byte b4=4,b5=6,b7;
b3=(byte) (b1+b2); /语句1/
b6=b4+b5; /语句2/
b8=(byte) (b1+b4); /语句3/
b7=(byte) (b2+b5); /语句4/
System.out.println(b3+b6);

自动转换是程序在执行过程中 “ 悄然 ” 进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换;强制类型转换则必须在代码中声明,转换顺序不受限制。
自动数据类型转换
自动转换按从低到高的顺序转换。不同类型数据间的优先关系如下:
低 ---------------------------------------------> 高
byte,short,char-> int -> long -> float -> double

下列哪些语句关于 java 内存回收的说明是正确的?
程序员必须创建一个线程来释放内存
内存回收程序负责释放无用内存
内存回收程序允许程序员直接释放内存
内存回收程序可以在指定的时间释放内存对象

A:垃圾回收程序是一般是在堆上分配空间不够的时候会自己进行一次GC,程序员不需要也不能主动释放内存。
B:Java的内存释放由垃圾回收程序来进行释放
C:在Java里,内存的释放由垃圾回收程序进行管理,程序员不能直接进行释放。
D:程序员可以调用System.gc()运行垃圾回收器,但是不能指定时间。

public>protected>default>private

Java中引用类型在赋值时,复制的是对象实体 × 只有传值
数据类型

所以基本的数据类型都不是对象,(非面向对象的设计),因为基本类型在运算过程中非常快,对象的运算速度相对会慢一些
以0开头表示八进制,int i = 010 //i=8
Int i = -012 //i = -10
以0x开头表示十六进制
Int i = 0x10 //i = 16
Int i = -0xff //i = -255
以0b开头表示二进制
Int i = 0b0101
可以用下划线分隔数据
int i = 12_103; //12103

10.标签

loop:
for(int i = 0 ; i <= 3 ; ++ i) {
if(i == 2)
break loop; //本来等于3才结束循环,现在2就结束了,主要是可以跳出多重循环
} //带标签的循环

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值