javase(基础语法)

32 位 内存最大支持4G (即使pc有8G的内存), 文件有(x86)标识

java版本介绍

javaSE java标准版 (以前简写J2SE) java技术核心和基础

JavaEE,Java企业版(以前简写J2EE)java技术中应⽤应⽤最⼴泛的部分

JavaME,Java微型版(以前简写J2ME),主要⽤于移动设备

jvm>jre>jdk

jvm

java虚拟机,简单看作一个操作系统,java程序会被编译为 .class 的字节码文件,根据字节码指令进行识别并调用上层操作系统

jre

java 运行时环境,运行+编译环境 ,基本内库+jvm

jdk

java 开发工具包 , java开发的核心, jre+jvm+开发工具包

在这里插入图片描述

java语言优势 , 一次编译,跨平台(jvm),四处运行

jdk 环境变量 配置

环境变量定义

就是告诉计算机去这个路径下找对应的⽂件

jdk8 环境 配置

系统变量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sJBYdMdk-1658234937349)(C:\Users\22496\AppData\Roaming\Typora\typora-user-images\image-20220706103104224.png)]

CLASSPATH 系统变量下 与JAVA_HOME 同级

变量名 CLASSPATH

变量值 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2DDsHX12-1658234937349)(C:\Users\22496\AppData\Roaming\Typora\typora-user-images\image-20220706110356599.png)]

path

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V1sECmRw-1658234937350)(C:\Users\22496\AppData\Roaming\Typora\typora-user-images\image-20220706110507961.png)]

检查是否成功

javac

java

java -version

DOS命令

d: 切换盘符

cd 切换目录

mkdir 创建目录

rmdir 只能删除空目录

dir 显示字目录

cls 清屏

exit 退出

java 程度运行流程

完成代码

控制台 GBK编码 ,记事本改编码为ANSI

保存⽂件,通过CMD窗⼝进⼊对应的路径

编译 javac HelloWorld.java

运⾏ java HelloWorld

over!!!

控制台 GBK编码 ,记事本改编码为ANSI,

输入输出print & scanner

println & print

​ System.out.printfln(“aaaa”); 输出aaaa 并换行

​ System.out.printfln(); 括号里不写,直接换行, 相当于 \n

System.out.printf(); 输出不换行

转义字符 \

\n 换行

\t 制表符 相当于tab键 4个空格

注释

/** */ 文档注释,生成文档时该注释里的内容会自动生成

变量

​ 数据类型 变量名 = 变量值 ;

变量名 :

​ 数字,字母,下划线组成, 不能以数字开头

​ 不能使用java关键字

​ alibaba编码规范

8大基本数据类型

byte 1B=8bit(位) -128~~127 正0和负0占两个空间,我们用正0表示

​ 0,为了不浪费10000000(-0),就

short 2B 把负数向后移一位;2^7-1 127

int(默认) 4B

long 8B

double (默认) 8B

float 4B

char 2B

boolean 1bit

5种引用数据类型

​ 类 接口 数组 枚举 标注

变量赋值

整型

​ byte b = 128; 报错,超出范围

浮点型

​ float 小数点后7位

​ double 小数点后15位

​ float num = 1.2 ; 报错,小数默认为double,高转低失败,丢失精度

数据类型转换

​ 低===》高 自动转换 char–>int 可以,ascll码表

​ 高===》低 强制类型转换 , 丢失精度 int a =(int)double ; float num = 1.2 f/F; long l=123 l/L;

Scanner

​ import java.util.Scanner; 导包 util

​ java.lang包 不用到,加载时自动导包

使用步骤:

  1. 在类上导入 Scanner类, 位于java.util包: import java.util.Scanner;

String/System 不需要导包, 位于java.lang包, 程序自动加载java.lang下的类

  1. 创建Scanner Scanner input = new Scanner(System.in);

  2. 调用next相关的方法, 进行输入 input .nextInt() input.nextDouble()

nextInt() 输入一个整型

nextDouble() 输入一个double浮点数

nextBoolean() nextFloat()…

但是: 不能输入char 没有nextChar()

next() 输入字符串 nextLine() 输入字符串

细节:

输入字符串: next() nextLine()

next() 输入有效字符串, 不包含 空格,tab,回车, 遇到空格,tab,回车,都结束输入

但是空格,tab,回车内容 保存到缓存中

nextLine() 输入字符串,包含空格, 但是nextLine() 前面有其他next() nextInt() nextDouble()…

nextLine() 不起作用, 无法输入

解决方案: 1. nextLine() 放在所有的next方法之前

​ 2. nextLine() 不在第一个位置: 使用nextLine() 再加一个nextLine()

运算符

1.算术运算符: + - / * %

2.赋值运算符: =

3.比较运算符: > < >= <= == !=

4.逻辑运算符: &&(与) || (或) ! &(与) | (或)

5.++,-- 运算符

6.位运算: &(与) |(或) ^(异或)

算术运算符

+: 1) 数值类型 + 加法

​ 2) 字符串与任意的类型 +, 表示拼接, 结果:字符串

/: 1) 整数/整数 整除(结果取整)

​ 2) 除数或者是被除数是浮点类型, 除法, 结果带小数

%: 取余 5%2= 1

作用:

  1. 判断是否整除

  2. 得到某位的数值, 对某个数进行缩小归类

自增

++: 加1 语法 变量++ ++变量

​ 前加加 ++变量 步骤: 先变量加1 , 后赋值, 整个表达式的值 = 变量的值

>int a  = 10;
>
>//++a;  //1)  a = a+1  a=11  2) 赋值  (++a) = a;  (++a) = 11
>
>int b = ++a;   //1)  a = a+1  a=11  2) 赋值  (++a) = a;  (++a) = 11  3) 赋值符号:  把++a表达式的值赋给b 

​ 后加加: 变量++ 先赋值: 变量的值赋给表达式 后加1: 变量加1

int a = 10;

int b = a++; //1) 先赋值, 把a的值赋值给(a++)表达式 10 2) 加1: a = a+1, a=11 3)再把表达式结果赋值给b b = 10

-- 减1

前减减: --变量: 先减1, 再赋值

后减减: 变量–: 先赋值,再减1

赋值运算符
  1. = 语法: 变量 = 值; 变量 = 变量1; 不能写: 值 = 变量; 错误, 把赋值符号右边赋值给左边
  2. += a += b; a = a+b;
  3. -= a -= b; a= a-b;
  4. = a * = b; a = ab;
  5. /= a /= b; a = a/b;
  6. %= a%=b; a= a%b;

赋值符号与算术符号组合的赋值符号: 隐式数据类型转换

a += b; 把a+b的结果 转换为a的类型

比较运算符

比较运算符结果: boolean类型: true/false

使用场景: 条件语句, 循环语句

== 等于, = 赋值符号

!= 不等于

>大于

< 小于

>= 大于等于

<= 小于等于

逻辑运算符

&& 短路与, 如果第一个表达式的结果为false, && 后面的表达式都不执行(类似电路的短路)

|| 短路或: 如果第一个表达式的结果为true, || 后面的表达式都不执行(类似电路的短路)

!

& 与 没有短路

| 或 没有短路

结果: boolean 类型

使用的场景: 条件,循环中, 连接多个比较表达式

三目运算符

语法: 条件(boolean的表达式)?值1:值2

如果条件为true: 返回值1, 如果条件为false, 返回值2

三目运算符可以嵌套:

条件1?值1:(条件2?值2:值3)

对if-else 某些场景的简化, if-else返回结果, 可以使用三目运算替换

位运算 二进制的位运算

&: 按位与 : 1:true 0:false 只要位上有一个为0, 结果:0 位上都为1, 结果: 1

|: 按位或: 只要位上有一个为1: 结果: 1 位上都是0: 结果: 0

!: 按位非 : 1 -取反-> 0 0-取反->1

^: 异或: 相同为0 , 不同为1 一个数异或某个数两次,等到自己

移位操作: 拓展

>>右移

<<:左移

java: 十进制, 八进制, 十六进制:

int a = 123; //十进制数

int b = 0123; //八进制

int c = 0x123; //十六进制

分支语句

if-else
```java

if(){

}else if(){

}else{

}

```
switch
switch(表达式){case1://逻辑代码break;  //退出switchcase2://逻辑代码break;  //退出switch

//...

default://逻辑代码

break;
}

siwtch中表达式: 在jdk1.7之前,不支持String, 在jdk1.7以及之后支持String

​ 类型: 基本数据类型, String, 枚举类型

case的值不能相同, 值唯一

break: 可以省略, 也可以不省略

default: 可有可无, default 可以在最前面, 也可以在最后面, 推荐写在最后面, 可以省略break,

​ 写在最前面, 但是一定要写 break;

循环

for( )
while

while(循环条件){

//循环体

}

//把for循环的表达式1 写在循环之外, 表达式3写循环体的for循环

表达式1;

for(;表达式2;){

​ //循环体

//表达式3

}

while循环体包含: 重复做的事情, 还有修改循环遍历

for/while特征: 先判断,后循环, 可能一次都不执行, 一上来,循环条件为false

do-while

do-while: 特征: 先循环,后判断, 最小循环次数: 1

语法:

do{

//循环体

}while(循环条件);

//注意: while后面小括号之后有一个分号,不能省略

数组

一维数组

变量: 只能存储一个值

数组: 存储的一组相同数据类型的值, 存储个数: 由程序员在创建的数组的时候来指定,

​ 缺点: 固定长度

​ 也称为: 容器

数组要素:

​ 1) 数组名

​ 2) 数据类型

​ 3) 元素

​ 4) 下标: 获取指定位置的元素: 从0开始: 0 表示第一个元素, 1表示第二个元素…

0=<下标<数组长度

​ 5) 数组的长度: 表示数组最大允许存多少个元素

1、声明数组: 没有开辟空间

​ 语法:

​ 数据类型[] 数组名;

​ 数据类型 数组名[];

  1. 开辟空间, 指定数组的长度 通过new关键字, 数组开辟空间是连续

    数组名 = new 数据类型[长度];

​ 注意:

 >   new 数组的方式: 除了开辟内存空间, 还会对数组中元素进行初始化(赋予初始值)

 >  初始值根据数据类型决定:

​ int/byte/short/long: 初始值0

​ double/float: 初始值:0.0

​ char: \u000

​ boolean: false

​ String/类类型: null

  1. 往数组中存放元素: 通过下标

数组名[下标] = 值;

注意:

如果下标超出最大下标(数组的长度-1): 抛出一个数组越界的异常  ArrayIndexOutOfBoundsException: 5

如果一个数组没有开辟空间, 不能存放数据, 编程出错

  1. 获取数组的元素,进行相关操作

通过下标: 数组名[下标]

如果下标超出最大下标(数组的长度-1): 抛出一个数组越界的异常 ArrayIndexOutOfBoundsException: 5

在实际开发中,可能使用循环遍历这个数组(把数组的元素一个一个拿出来), 最匹配:for

动态的获取数组的长度: 数组提供了一个属性:

  >  数组名.length  获取该数组的长度

可以把1,2,3(声明数组,开辟空间,存元素)合并成一行代码, 数组静态创建

数据类型[] 数组名 = new 数组类型[]{值1,值2,值3,…}

注意: new后面中括号不能写长度, jdk根据后面值的个数确定数组的长度

简写: 数据类型[] 数组名 ={值1,值2,…}

二维数组

由多个一维数组组成, 称为二维数组

三维数组: 由多个二维数组组成

声明一个二维数组:

//1,声明数组
数据类型[][] 数组名;
//2.开辟空间
数组名 = new 数据类型[长度1][长度2]

长度1: 表示的一维数组的个数

长度2: 表示的一维数组的元素个数

//3.赋值  通过下标
数组名[i][j] =;
//4.使用: 通过下标
数组名[i][j]

遍历一维数组: 一个for循环

遍历二维数组: 两个for循环

二维数组的静态初始化

//一维数组的静态初始化
int[] arr = new int[]{1,2,3,4,5};
int[] arr2 = {1,2,3,4,5};
//二维数组:
int[][] arr3 = {{1,2,3},{4,5,6},{7,8,9}};

二维数组的一维数组长度: 数组名.length

二维数组的指定下标的一维数组元素个数: 数组名[下标].length

二维数组的元素个数: 数组名[0].length+数组名[1].length+…+数组名[数组名.length-1].length

数组的工具类: java.util.Arrays
1.Arrays.toString()方法

方法作用:快速输出数组内容

int[] a = {1,2,3,4,5};
System.out.println(Arrays.toString(a));
// 输出格式:[1,2,3,4,5]
2.Arrays.sort()方法

方法运用:给数组排序,默认升序

int[] a = new int[5]{54321};
Arrays.sort(a); // 1 2 3 4 5
System.out.println(Arrays.toString(a));
// [1,2,3,4,5]


  int []a = new int[]{7,2,8,3,1,2,90,23};
        //  fromndex 起始地址     排序到toindex的前一位; 
        Arrays.sort(a,3,6);
        System.out.println(Arrays.toString(a));
        // [7, 2, 8, 1, 2, 3, 90, 23]
        //           3  4  5

Arrays.sort()降序排列

不能作用于基本数据类型!

Integer[] a = {1,2,3,4,5}
Arrays.sort(a,Collections.reverseOrder())
// 输出数组的内容即为:5 4 3 2 1

实现Comparator<> 接口

   Integer []a = new Integer[]{2,45,34,70,0,1};
        Arrays.sort(a, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                //升序
//                return o1.intValue()-o2.intValue();
                //逆序
                return o2.intValue()-o1.intValue();
            }
        });
        System.out.println(Arrays.toString(a));
        //[70, 45, 34, 2, 1, 0]


//lambda 表达式
 Integer []a = new Integer[]{2,45,34,70,0,1};
        Arrays.sort(a, (e1,e2)-> e2-e1);
        System.out.println(Arrays.toString(a));
        //[70, 45, 34, 2, 1, 0]
3.Arrays.equals()方法

方法作用:比较两个数组内容是否相等

int[] a = {1,2,3};
int[] b = {1,2,3};
boolean isSame = Arrays.equals(a,b);
//true

注意:Arrays.equals()是比较数组内容,而a.equals(b) (继承Object)这样的方法是比较地址值

4.Arrays.binarySearch()

方法作用:在数组中查找元素

再数组中查找指定值,若找到,则返回此值的下标,

若没找到,返回 -插入点-1;

int[] a = {1,5,6,7};
Arrays.binarySearch(a,2)  //没找到,插入点为1,则返回 -2
Arrays.binarySearch(a,4)  //没找到,插入点为1,则返回 -2
Arrays,binarySearch(a,8)  //没找到,插入点为4,则返回 -5
Arrays.binarySearch(a,5)  //找到了!返回下标 1
只要返回值 ≥ 0 ,就代表找到了。
5.Arrays.copyOf()

方法作用:拷贝数组

   int []a = new int[]{1,2,3,4,5};
//      第二个参数为拷贝的数组元素个数
        int []b= Arrays.copyOf(a, 5);
        int []c= Arrays.copyOf(a, 3);
        System.out.println(Arrays.toString(a)); //[1, 2, 3, 4, 5]
        System.out.println(Arrays.toString(b)); //[1, 2, 3, 4, 5]
        System.out.println(Arrays.toString(c)); //[1, 2, 3]

返回值是一个新数组,会改变接收这个新数组的引用的一些属性

eg:

      int[] arr1 = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
            int[] arr2 = new int[5];
            arr2 = Arrays.copyOf(arr1, 10);
            System.out.println(Arrays.toString(arr2));  //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Arrays.copyOf()的拷贝是从下标0开始的,如果你想从其他下表开始,可以使用Arrays.copyOfRange()方法

   int[] arr1 = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
            int[] arr2 = new int[5];
            //from起始下标 , to 复制到下标前一位
            arr2 = Arrays.copyOfRange(arr1, 2,6);
            System.out.println(Arrays.toString(arr2));  //[3, 4, 5, 6]
    System.out.println(Arrays.toString(a)); //[1, 2, 3, 4, 5]
    System.out.println(Arrays.toString(b)); //[1, 2, 3, 4, 5]
    System.out.println(Arrays.toString(c)); //[1, 2, 3]

返回值是一个新数组,会改变接收这个新数组的引用的一些属性 

eg:

```java
      int[] arr1 = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
            int[] arr2 = new int[5];
            arr2 = Arrays.copyOf(arr1, 10);
            System.out.println(Arrays.toString(arr2));  //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Arrays.copyOf()的拷贝是从下标0开始的,如果你想从其他下表开始,可以使用Arrays.copyOfRange()方法

   int[] arr1 = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
            int[] arr2 = new int[5];
            //from起始下标 , to 复制到下标前一位
            arr2 = Arrays.copyOfRange(arr1, 2,6);
            System.out.println(Arrays.toString(arr2));  //[3, 4, 5, 6]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值