Java面向过程

Java面向过程

安装
  1. 下载Java安装包进行安装
    • JDK目录结构
    • bin目录 - 该目录下主要存放JDK的各种工具命令。
    • conf目录 - 该目录下主要存放jdk的相关配置文件。
    • include目录 - 该目录下主要存放了一些平台的头文件。
    • jmods目录 - 该目录下主要存放了JDK的各种模块。
    • legal目录 - 该目录下主要存放了JDK各模块的授权文档。
    • lib目录 - 该目录下主要存放了JDK工具的一些补充jar包和源代码。
  2. 配置环境变量
    • 新建系统变量JAVA_HOME,值为Java的安装目录,我的是C:\Program Files\Java\jdk1.8.0_121
    • 编辑系统变量Path,新增%JAVA_HOME%\bin
  3. 验证
    • 在cmd窗口,输入java和javac看是否有命令提示
一. 变量以及数据类型
1.变量声明

数据类型 变量名 = 初始值;

  • 初始值可以省略
  • 每个变量都有默认的初始值,但是变量在使用之前必须初始化
  • 变量不能重复声明

标识符命名法则

  • 由数字、字母、下划线以及$等组成,其中数字不能开头
  • 不能使用Java语言的关键字
  • 区分大小写,长度没有限制但不宜过长
2.数据类型
1. 基本数据类型
数据类型字节数
整数类型
byte1个字节(-2^7 ~ 2^7-1)
short2个字节(-2^15 ~ 2^15-1)
int4个字节(-2^31 ~ 2^31-1)
long8个字节(-2^63 ~ 2^63-1)末尾加L
浮点类型默认位double
float4个字节(7位有效数字,后面需要加f或F)
double8个字节(15位有效数字)
布尔类型
boolean只有true 和 false
字符类型Java字符采用Unicode字符集编码,所有字符都是16位
char2个字节(0~65535)没有符号位

因为采用补码,正数的0给了负数,所以正数会比负数少1

2. 引用数据类型

数组,类,接口,枚举,标注…

3. 基本数据类型之间的转化
  1. 自动类型转化

    从小类型到大类型之间的转化 在这里插入图片描述

  2. 强制类型转化

    目标类型 变量名 = (目标类型)源类型变量名

3.运算符
1. 字符串连接符
  • +既可以作为字符串连接符,又可以作为加法运算符
  • 只要+两边的操作数中有一个操作数是字符串类型,则该+就被当作字符串连接符处理,否则当作加法运算符处理
2. 算数运算符 +, - ,* , /, %
  • 整数相除时结果保留整数部分

    保留小数的处理方式

    整数1*1.0 / 整数2
    
  • 0和0.0不能做除数,会报算数异常,java.lang.ArithmeticException

3. 关系/比较运算符
  • >表示是否大于运算符
  • >= 表示是否大于等于运算符
  • < 表示是否小于运算符
  • <= 表示是否小于等于运算符
  • == 表示是否等于运算符
  • != 表示是否不等于运算符
  • 所有以关系运算符作为最终运算的表达式结果一定是boolean类型
4. 自增减运算符
  • ++ 表示自增运算符,用于使得当前变量自身的数值加1的效果
  • – 表示自减运算符,用于使得当前变量自身的数值减1的效果
  • 只能用于变量,常数不可以
5. 逻辑运算符
  • && 表示逻辑与运算符,相当于"并且",同真为真,一假为假。

  • || 表示逻辑或运算符,相当于"或者",一真为真,同假为假。

  • ! 表示逻辑非运算符,相当于"取反",真为假,假为真。

  • 逻辑运算符的操作数均为boolean表达式。

    逻辑运算符的短路特性:对于逻辑与运算符(&)来说,若第一个表达式为假则结果为假,此时跳过第 二个表达式; 对于逻辑或运算符( | )来说,若第一个表达式为真则结果为真,此时跳过第 二个表达式;

6. 条件/三目运算符

条件表达式?表达式1:表达式2

  • 判断条件表达式是否成立,若成立则执行表达式1,否则执行表达式2。

  • 三目运算符虽然后面有分号,但是只能作为表达式,不能作为语句。

7. 赋值运算符
  • = 表示赋值运算符,用于将=右边的数据赋值给=左边的变量,覆盖变量 原来的数值。

  • 赋值运算符的简化写法 +=, -=, *=,/=

    • 考点:byte类型进行运算时

      byte b1 = 10;
      System.out.println("b1=" + b1);
      //执行这句会报错,因为b1为byte类型,等式右边为int类型
      b1 = b1 + 2;
      //右边都为byte类型也会报错,这里有编译器优化,两个byte类型相加等式右边会b1提升为int类型,等式左边此时为byte类型
      b1 = b1 + (byte)2;
      //正确写法
      b1 = byte(b1 + 2);
      //上式等价于
      b1 += 2;
      System.out.println("b1=" + b1);
      
8. 移位运算符
  • << 左移运算符,用于将数据的二进制位向左移动,右边使用0补充。

  • >> 右移运算符,用于将数据的二进制位向右移动,左边使用符号位补充 。

  • >>> 表示逻辑右移运算符,用于将数据的二进制位向右移动,左边使用0 补充。

  • 移位运算符也会将byte类型自动提升为int类型。

    byte b1 = 13;
    //会报错,等号右边已经变为int类型,移位运算符也会自动提升byte为int类型
    byte b2 = b1 << 1;
    
9. 位运算符
  • & 表示按位与运算符,按照二进制位进行与运算,同1为1,一0为0.
  • | 表示按位或运算符,按照二进制位进行或运算,一1为1,同0为0.
  • ~ 表示按位取反运算符,按照二进制位进行取反,1为0,0为1.
  • ^ 表示按位异或运算符,按照二进制位进行异或运算,同为0,不同为1.
10.运算符优先级

在这里插入图片描述

  • ()的优先级极高。
  • =的优先级极低。
  • 若无法确认优先级,则使用()来确保即可。
二. 流程控制语句
1. 分支结构
1. 单if

在这里插入图片描述

//1.单if分支
if(条件表达式) {
	语句块;
}
  • 条件表达式的条件必须为boolean类型,不能是int类型
2.if…else

在这里插入图片描述

//2.if else分支结构
if(条件表达式) {
    语句块1;
} else {
    语句块2;
}
2. if… else if… else

在这里插入图片描述

//if... else if.. else
if (条件表达式1) {
    语句块1;
} else if (条件表达式2) {
    语句块2;
} else {
    语句块3;
}
4.switch…case分支结构

在这里插入图片描述

//switch...case分支结构
switch(变量/表达式) {
    case 字面值1: 语句块1; break;
    case 字面值2: 语句块2; break;
    ...
    default: 语句块n;
}
  • switch()中支持的数据类型有:byte、short、char以及int类型,从jdk1.5 开始支持枚举类型,从jdk1.7开始支持String类型。
  • 注意 switch case default 要输入break,没有break会顺序执行
  • case后面必须是常量,并且常量不能重复
2.循环结构
1.for循环结构

在这里插入图片描述

//for循环
for (初始化表达式;条件表达式;修改初始值表达式) {
    循环体;
}
  • continue,提前结束本次循环,开始下一次循环

    // 使用for循环打印1 ~ 20之间的所有不含5的倍数的整数
    for(int i = 1; i <= 20; i++) {
    	if(0 == i % 5) {
    		continue; 
    	}
    	System.out.println("i = " + i);
    }
    
  • break,跳出当前循环,用法基本和continue一致

2.while循环

在这里插入图片描述

while(条件表达式) {
    循环体;
}
3. do…while循环

在这里插入图片描述

do {
    循环体;
}while(条件表达式);
三. 数组的基本概念
  • 数组是相同数据类型的多个元素的容器,元素按线性顺序排列,在Java语言中体现为一种引用数据类型。
1.一维数组
  • 声明

    //数据类型 [] 数组名称 = new 数据类型[数组的长度];
    int [] arr = new int[2];
    
  • 数组的初始化

    //声明同时进行初始化
    //数据类型[] 数组名称 = new 数据类型[]{初始值1, 初始值2, ...};
    char[] arr = new char[]{a, b, c, d, e}
    //简化写法
    char[] arr = {a, b, c, d, e};
    
  • 内存分析

在这里插入图片描述

  • 数组拷贝

    //start1是arr1开始拷贝的位置,start2是arr2开始拷贝的位置,length是拷贝的长度
    System.arraycopy(arr1, start1, arr2, start2, length)
    
    • 数组拷贝是两个数组指向了同一块堆区空间,本质上上就是改变指向而已
  • 数组工具类

    java.util.Arrays;

    static String toString(int[] a)输出数组中的内容
    static void fill(int[] a, int val)将参数指定元素赋值给数组中所有元素
    static boolean equals(boolean[] a, boolean[] a2)判断两个数组元素内容和次序是否相同
    static void sort(int[] a)对数组中的元素进行从小到大排序
    static int binarySearch(int[] a, int key)从数组中查找参数指定元素所在的位置
2.二维数组
  • 二维数组本质上就是由多个一维数组摞在一起组成的数组,二维数组中的每个元素都是一维数组,而一维数组中的每个元素才是数据内容。

  • 声明

    //数据类型[][] 数组名称 = new 数据类型[行数][列数]
    char[][] arr = new char[2][8];
    
  • 初始化

    char[][] arr = {{1,2,3,4},{5,6,7,8}};
    //可以不指定列数,对每一列进行初始化,每一列的个数可以不同
    int[][] arr1 = new int[3][];
    arr1[0] = new int[3];
    arr1[1] = new int[4];
    arr1[2] = new int[5];
    

一起组成的数组,二维数组中 的每个元素都是一维数组,而一维数组中的每个元素才是数据内容。

  • 声明

    //数据类型[][] 数组名称 = new 数据类型[行数][列数]
    char[][] arr = new char[2][8];
    
  • 初始化

    char[][] arr = {{1,2,3,4},{5,6,7,8}};
    //可以不指定列数,对每一列进行初始化,每一列的个数可以不同
    int[][] arr1 = new int[3][];
    arr1[0] = new int[3];
    arr1[1] = new int[4];
    arr1[2] = new int[5];
    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值