前言

image-20240228204313140

命令行运行

JAVA_HOME 下面填写到 jdk 版本

后来在 path 下面添加的 %JAVA_HOME%\bin 与上面的路径无关

当我们要运行Java程序时,我们需要编译(需要使用javac.exe)和执行(需要使用java。exe),而系统默认的是在当前程序所在的文件夹目录下去寻找这两个执行文件,而不会去其他地方找,此时我们就需要配置Path环境变量,使得每次程序运行就自动到安装JDK的bin目录下去搜索javac.exe和java.exe文件。

classpath 变量的含义是告诉jvm要使用或执行的class放在什么路径上,便于JVM加载class文件

基本的 bat 脚本样例

1
2
3
4
5
set JAVA_HOME=%JAVA_HOME%
set PROJECT_HOME=C:\Users\23258\Desktop\chapter1
set path=%JAVA_HOME%\bin
set classpath=%PROJECT_HOME%\class
java -classpath %classpath% homework.ch1.Welcome

数据类型

java 中变量为值变量还是引用变量取决于变量的声明类型

值变量: byte short int long char float double boolean

引用变量: class interface array

image-20240308093109442

image-20240308123425965

image-20240308123505435

image-20240308123557826

image-20240308124101455

image-20240308124147294

image-20240308124338930

字符串转换为其他的

1
2
int i = Integer.parseInt("1");
double d = Double.parseDouble("20.2");

image-20240308125232283

注意啦:boolean 不能和其他的类型转换

看看下面这个语句

1
2
int x = 0, y = 0;
System.out.println(((x>1)&&(++x )));

这个句子是有问题的,++x 这个式子得到的是一个int ,但是 && 这个需要的是 boolean ,要改为

1
System.out.println(((x>1)&&(++x ==0)));

image-20240308130651595

image-20240308134430441

image-20240308135351875

1
2
3
4
5
6
7
8
9
char a = '1';
switch (a){
case '1':
System.out.println(a);
case '2':
System.out.println(a);
default:
System.out.println("88")
}

没有break的话直接一路下来

image-20240308135653946

如果是这种的话,只会输出到88

image-20240308140000981

条件运算符 ? : 为什么说是右结合的呢

1
2
3
a>b ? c : d ? e : f;
等价于
a>b ? c : (d ? e : f);

数学函数,字符,字符串

image-20240308140629941

image-20240308140708717

image-20240308141520835

image-20240308141709072

round 就类似一个四舍五入的

image-20240308141812805

随机产生一个字符

1
System.out.println((char)(int)(Math.random()*(65535+1)));

image-20240308142422053

image-20240308142454497

image-20240308142604877

image-20240308142702115

image-20240308143258940

image-20240308144437216

image-20240308144615208

判断的返回值是 boolean

循环

image-20240309165430377

image-20240309165756478

方法

image-20240309192339213

image-20240309193558268

image-20240309205852713

image-20240309210624699

image-20240309210901394

image-20240309211154390

数组

image-20240309213006715

image-20240309213626447

image-20240309214146494

image-20240309214428693

image-20240310071117370

image-20240310071400781

image-20240310071454572

int与Integer的基本使用对比

  • Integer是int的包装类;int是基本数据类型;
  • Integer变量必须实例化后才能使用;int变量不需要;
  • Integer实际是对象的引用,指向此new的Integer对象;int是直接存储数据值 ;
  • Integer的默认值是null;int的默认值是0。

image-20240310194159524

比较 == ,equal , compareto 区别

  1. 等号是最简单也最容易理解的,如果等号的两边是基本数据类型,比如int,double,那么等号就用来单纯的比较他们的数值大小
    如果等号两边放的是两个对象,那么就会比较他们在内存当中的地址。
  2. compareTo()会返回数字,如果两个字符串内容相同,会返回0,字符串a大于字符串b,会返回相差的ASCII码的正数,字符串a小于字符串b,会返回相差的ASCII码的负数。
  3. equals是先用等号(==)直接来比较两个对象在内存当中的地址,如果相等会直接返回true,如果这两个对象的地址不一样,就会考虑这两个对象是不是String类型的,如果是String类型的,那先比较两个字符串长度是否一样,如果长度不一致,那100%不相等,直接返回false。长度一致则逐个比较

intern

intern() 方法用于在运行时将字符串添加到内部的字符串池中,并返回字符串池中的引用。

它遵循以下规则:对于任意两个字符串 s 和 t,当且仅当 s.equals(t) 为 true 时,s.intern() == t.intern() 才为 true。

1
2
3
4
String s1 = "Welcome";
String s8 = "Wel" + new String("come");

System.out.println(s1.equals(s8));

答案是 true