jar java环境_Java -环境搭建

从头学习Java

环境搭建:

1.1三个关系

JDK = JRE + 开发工具集

JRE = JVM + javaSE 标准类库

1.2 path

1.2.1 为什么需要配置path 环境变量

​what : windowsOS 执行命令时所要搜寻的路径(未配置,提示java 命令不存在等)

​why: 希望java的开发工具,在任何文件路径下都可以执行成功

​detail:

JAVA_HOME = D:\Java\jdk1.8.0

Path =%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; (用于编译)

CLASSPATH= %JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; (用于执行)

1.2.2 为什么不需要系统配置CLASSPATH

​what :Java编译型语言,编译后的.class(字节码)文件才可真正被JVM执行,若要加载 'HelloWord'类,JVM需要知道去哪里搜索对应的HelloWord.class ,因此classpath用来指示JVM如何搜索class

how to find: JVM 加载 HelloWord 类时,查找顺序

当前目录

CLASSPATH指定路径

suggest:不推荐在系统环境变量中设置classpath,那样会污染整个系统环境。在启动JVM时设置classpath才是推荐的做法。实际上就是给java命令传入-classpath或-cp参数:

java -classpath .;C:\work\project1\bin;C:\shared com.starry.Hello

​在IDE中运行Java程序,IDE自动传入 -cp 参数是当前工程的bin目录和引入的jar包

​eg: 在IDEA中,文件目录结构:target则存编译后的字节码

c06dd2d17ca02eefb49dce7c625da98b.png

1.3 编程运行

1.3.1 编写

​创建一个java源文件: HelloWord.java,所在包com.example

public class HelloWord{

public static void main(String []args){

System.out.println("Hello,World");

}

}

1.3.2 编译

​javac com.example.HelloWord.java

1.3.3运行

​java com.example.HelloWord

1.3.4 运行出错

javac 错误: 类HelloWord是公共的, 应在名为 HelloWord.java 的文件中声明

public 类的类名应该与文件名一致 (若无public,编译可以过)

java 错误: 找不到或无法加载主类 HelloWord.class

类文件名错误: 文件名与类名不一致.

如果类在包里,应该带上包名

1.4 Jar

1.4.1

​what: 把package组织的目录层级,以及各个目录下的所有文件(包括.class文件和其他文件)都打成一个jar文件(本质是一个zip压缩包)

​how to run : 当项目打包成jar包时,运行命令:java -jar HelloWorld.jar

​how to achieve : /META-INF/MANIFEST.MF文件,可以指定Main-Class和其它信息,JVM会自动读取这个MANIFEST.MF文件,如果存在Main-Class ,则可以用Java- jar执行.

2663dbb509e4eab56ae23263dcfbfa1d.png

1.4.2

Spring项目,Maven 打包成jar包的结构:

0c94df7f382522fc6f6066d2541228ee.png

Question :

JDK,JRE,JVM三者之间的关系,以及JDK、JRE包含的主要结构有哪些:

​JDK: JRE + 开发工具集 (javac.exe , java.exe ,javadoc.exe)

​JRE: JVM + JavaSE 标准类库

下载JDK1.8时有两个文件夹b54183d021421c57b6e97936b7ec4401.png

JDK1.8中还有一个jre

​ example: 编写一个 .java文件时,通过JDK中编译程序(javac.exe),将java文件编译成java字节码, 在jre运行字节码文件, JVM 解析字节码,映射到CPU指令集

为什么要配置path 环境变量 ? 如何配置?

​为了java开发工具在任意位置可以成功执行java相关的命令.

​JAVA_HOME = bin的上一级

​path = %JAVA_HOME%\bin

​CLASSPATH:系统变量 不是必须配置.IDE 在执行程序会自动带上-cp 指定路径寻找字节码文件.

基本语法:

基本类型

大小(字节)

默认值

封装类

byte

1

(byte)0

Byte

short

2

(short)0

Short

int

4

0

Integer

long

8

0L

Long

float

4

0.0f

Float

double

8

0.0d

Double

boolean

-

false

Boolean

char

2

\u0000(null)

Character

1.1运算符

算术运算符 +, -, *, /, %

++i :先自增1,后运算

i++ :先运算,后自增1

连接符:+:只能使用在String与其他数据类型变量之间使用。

赋值运算符 : = , += , -= , *= , /= ,%=

比较运算符: == ,!=, >, = , <= , instanceof

逻辑运算符: &, && ,| , ||, ! , ^

& && : A&B , A&&B ,当A为False时,& 会继续执行B ,而&&不在执行B (同理 | ,||)

位运算符 : 左<< >>右 2<

三元运算符: (条件表达式)? 表达式1 : 表达式2

1.2流程控制

分支:if else

switch(表达式){

case A:

xxx

break;

case B:

xxx

break;

case C:

xxx

break;

default:

}

循环:略

关键字:略

1.3 Scanner

Scanner scan = new Sacnner (System.in);

String name = scan.next();//String类型

int age = scan.nextInt();//int类型

double weight = scan.nextDouble();//

boolean isLove = scan.nextBoolean();

String gender = scan.next();//"男"//scanner无char转型;

char genderChar = gender.charAt(0);

Question

说明基本数据类型变量之间自动类型提升的运算规则

​byte ->short > int >long >float ->double

​自动类型提升:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型

​容量:表示数的范围大小,不是占用字节的大小 因此float(4) >long(8)

​底层原因: long存放的是数值类型,浮点数存放的是一种逻辑规则

2f0e89e0a0c628958f420890271bf2cf.png

数组:

1.1初始化

int []arr = new int[]{1000,2000,3000};

String []arr1 = new String [4];

int [][]arr = new int [][]{{1,2,3},{1,2,3},{1,2,3}}

String [][] arr1 = new String [3][];

1.2Arrays

//1.判断两个数组是否相等。

Arrays.isEquals(a,b)

//2.输出数组信息, 区别与a.toString()->地址

Arrays.toString(a);

//3.将指定值填充到数组之中。

Arrays.fill(a,10);

//4.对数组进行排序。

Arrays.sort(a)

//5.二分查找

Arrays.binarySearch(a,10);

1.3Question

​不同类型的一维数组元素的默认初始化值各是多少?

​整型 : 0

​浮点型:0.0

​char:' ' (空格)

​boolean :false

​引用类型:null

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值