JavaSE

JavaSE

环境配置

Java语言介绍

Java 诞生于SUN(Stanford University Network),09年SUN 被Oracle(甲骨文)收购。

Java 之父詹姆斯.高斯林(James Gosling)。

在这里插入图片描述

JavaSE

允许您在桌面和服务器上开发和部署Java应用程序

JavaEE

是为开发企业环境下的应用程序提供的一套解决方案,主要针对于Web应用程序开发。

JavaME

为互联网上的嵌入式和移动端设备上运行的应用提供一个健壮、灵活的环境:微控制器、网关、传感器、移动电话、等等。

字节

字节:计算机中存储数据的最小计量单位,用byte或者B表示。
计算器中最小的存储单元是二进制,因为计算机上任何能看到的东西都是由CPU通过二进制转来的。

1Byte = 8bite

1024Byte = 1kByte

Java 环境

JVM

JVM Java虚拟机:运行Java程序的

跨平台:一次编写导出运行

JDK和JRE

  • JDK(Java Develop Kit):Java开发工具包。
  • JRE (Java Runtime Environment):Java运行环境,包含了JVM 以及后面开发用到的核心类库
  • JDK、JRE、JVM的关系:JDK 包含了JRE,JRE包含了JVM,所以我们只需安装JDK。

JDK 安装

orcale.com

JDk 下载

开发

开发步骤

  1. 编写:创建一个.java文件
  2. 编译:javac java文件名
  3. 运行:java class 文件
javac Demo.java
java Demo
public class Demo{
	public static void main(String[] args){
		System.out.println("hello world");
	}
}

字符编码问题

  1. 编码:保存数据的过程就是编码的过程
  2. 解码:读取数据的过程就是解码的过程
  3. 注意
    编码和解码遵守的编码规范必须是一样的
    常见的两个编码规范
    GBK:专门为我们中文所设计的编码
    ANSI 代表的是GBK
    一个中文汉字在GBK中占用2Byte
    UTF-8:一个中文汉字在UTF-8中占用3Byte

变量 数据类型转换 运算符

常量

  1. 概述:在代码运行过程中,值不会发生改变的数据
  2. 分类
    • 整数常量-所有整数
    • 小数常量-所有小数
    • 字符常量-char
    • 字符串常量-String
    • 布尔常量 -true,false
    • 空常量-null 数据不存在
public class Constant{
	public static void main(String[] args){
		System.out.println(1);
		System.out.println(2);
		System.out.println(1.01);
		System.out.println(false);
		System.out.println("alex");
		System.out.println('A');
		System.out.println(1+2);
		// Tab 与 空格 的区别
		// 报错,四个空格
		System.out.println('    ');
		// tab键算一个字符
		System.out.println('	');
		// 空常量 
		// 报错 不能直接使用
		System.out.println(null)
	}
}

常量运算符

 public static Contant{
	public static void main(String[] args){
		System.out.println(1 + 3);
		System.out.println(2 * 2);
		System.out.println(10 - 5);
		System.out.println(10 / 2);
		 
	}
}

变量

数据类型关键字内存占用取值范围
字节型byte1 字节-128 至 127
短整型short2字节-32768至32767
整型int4字节
长整型long8字节
单精度浮点数float4字节
双精度浮点数double8字节
字符型char2字节
布尔类型boolean1字节true、false
  • 基本数据类型 4类型8种
    • 整型:byte、short、int、long
    • 浮点型:float、double
    • 字符型:char
    • 布尔型:boolean
  • 引用数据类型:类、数组、接口、枚举、注解
定义变量
  • 数据类型 变量名 = 值;
  • 数据类型 变量名;变量名= 值;
  • 数据类型 变量名1,变量名2,变量名3;
public class Demo{
	// 定义一个整数
	int a = 10;
	String str = "alex";
	int i , j k ;
	i = 0;
	j= 1;
	k= 2;
	int a = 1 ,b =2,c=3;
}

先看=右边的,再看=左边的,将右边的数据赋值给左边的变量,右边的如果有运算,先将等号右边的运算结构给左边

  • 注意
    • 字符串不属于基本数据类型,属于引用数据类型,String
public class Var{
	public static void main(String[] args){
		byte b = 100;
		short s  = 1000;
		int i = 99;
		// 值的后面加一个L
		long l = 100000000L;
		// float 值后加一个F
		float f = 2.5F;
		double d = 2.5;
		char c = 'A';
		boolean bt = true;
		boolean bf = false;
		String str = "my name is alex";	
	}
}
变量运算
public class Var {
	public static void main(String[] args){
		int a = 1;
		int b = 2;
		int sum = a + b;
	}
}
转义字符
  1. 将普通字符转为具有特殊含义的字符
  2. 将具有特殊含义的字符转为普通字符
public class Var {
	public static void main(String[] args){
		// \n : 换行符	
		system.out.print("春眠不觉晓\n");
		// \t:制表符
		system.out.print("hello \t word");
		// String 表示一个路径,
		// 在Java中两个 \\ 表示一个 \ 
		System.out.print("D:\\code\\alive")
	}
}
float 和 double 区别
  • float 的小数位只有 23位 二进制,能表示的最大十进制为223次方(8388608),是7位数,所以float型表示的小数,小数位能表示7位;
  • double的小数位只有52位二进制,能表示的最大十进制为(4 502 599 627 370 496),是16位数,所以double型的小数,小数位能表示出16位。
  • 所以不要直接使用float或者double直接参与运算,会造成精度损失。
public class var{
	public static void main(String[] args){
		float c = 10;
		float d = 3;
		// 3.3333333
		float e = c/d;
		
		double a = 10;
		double b = 3 ;
		// 3.3333333333333335
		double res = a/b;
		// 精度损失
		float x = 3.55F;
		float y = 2.12F;
		// 1.4300001
		float f = x -y;
	}
}

标识符

  • 类 方法名 变量取名;
  • 注意:
    1. 标识符可以包含 英文字母、数字、$和_ ;
    2. 标识符不能以数字开头;
    3. 标识符不能是关键字;

数据类型转换

  • = 左右两边的类型不一致
  • 不同类型的数据做运算
  • 分类
    1. 自动类型转换:
      将取值范围小的数据类型赋值给取值范围大的数据类型 ->小转大;
      取值范围小的数据类型和取值范围大的数据类型做运算 ->小转大;
    2. 强制类型转换
      当将取值范围大的数据类型赋值给取值范围小的数据类型 ->需要强转;
    3. 基本类型中按照取值范围从小到大排序
      byte,short,char ->int->long->float->double
public class Demo{
	public static void main(String[] args){
		// 自动类型转换
		long a = 100;
	}
}

强制类型转换

  1. 将取值范围大的数据类型赋值给取值范围小的数据类型
    取值范围小的数据类型 变量名 = 取值范围大的数据类型 ->需要强转
  2. 取值范围小的数据类型 变量名 = (取值范围小的数据类型)取值范围大的数据类型
public class {
	public static void main(String[] args){
		/**
		= 右边的是小数,小数默认的数据类型是double
		= 左边的变量是float类型
		所以会报错 
    	**/
		float a = 2.5;
		float b = 2.5F;
		// 结果为:2 //精度损失
		int i = (int)2.9;
		// 数据溢出 结果为:1410065408;
		int j = (int) 10000000000L;
	} 
}
  • 注意:
  • 强转会出现精度损失、数据溢出;
  • byte,short 定义的时候,如果=右边是整数常量,如果不超过byte,short的范围,不需要我们自己强转,jvm自动转型;
  • byte,short如果=右边有变量参与,byte和short自动提升为int,然后结果再次赋值给byte或者short变量;
  • char 类型数据如果参与运算,会自动提升为int型,如果char类型的字符提升为int型会去ASCII码表中查询对应的int值
  • 如果ASCII中没有对应的int值,会去Unicode(万国码)查询;
public class {
	public static void main(){
		// jvm 强转int
		byte a = 10;
		byte b = 10;
		// 有变量参与
		b = (int)(b + 1);
		
		char c = 'A';
		// 结果为95
		System.out.print(c+0);
		// 
		System.out.print('中'+0);
		// byte 的取值范围是 -128 至 127;
		byte d = (byte)200;
		// -56
		System.out.print(d);
		byte e = (byte)128;
		// -128
		System.out.print(e)
	}
}

进制转换

IDEA

运算符

流程控制

数组

数组的定义

数组是个容器,数组本身是引用数据类型;
存储多个数据
特点:
既可以存储基本类型数据,也可以存储引用数据类型;
定义数组大小,长度为多长,最多能存储多少数组;
定义:

  1. 动态初始化:
    数据类型[] 变量名 = new 数据类型[长度];
    数据类型 变量名[] = new 数据类型[长度];
  2. 静态初始化:
    数据类型[] 变量名 = {…};
package alive.array;

/**
 * @Author zyj
 * @Date 2024/08/17 22:13
 * @Description 数组定义
 */
public class Arr {
    public static void main(String[] args) {
        // 动态初始化
        int[] arr1 = new int[3];
        String arr2[] = new String[3];
        // 静态初始化
        int[] arr3 = {1, 2, 3, 4, 5, 6};
        String arr4[] = {"1", "2", "3"};
    }
};

数组操作

获取数组长度

arr.length;

存储元素

格式:数组名【索引】 = 值;

获取元素

格式:数组名【索引值】
细节说明:

  1. 直接输入数组名,会输出一个地址值
  2. 地址值:数组在内存中的一个唯一标识,通过这个唯一标识能够在内存中找到这个数组,从而操作这个数组
  3. 如果数组中没有存数据,直接获取也能获取出来一些元素(元素的默认值)
    整数:0
    小数:0.0
    字符:“\u0000” ->对应的int 0
    布尔:false
    引用:null
    在这里插入图片描述
遍历数组
package alive.array;

/**
 * @Author zyj
 * @Date 2024/08/17 22:13
 * @Description
 */
public class Arr {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5, 6};
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
        for (int i : arr) {
            System.out.println(i);
        }
    }
}

数组异常
  • ArrayIndexOutOfBoundsException

数组越界

  • NullPinterException

空指针异常

内存图

Java 中内存分为5块

  • 栈(Stack)
    主要运行方法,方法的运行都会进栈内存运行,运行完毕后,需要 “t弹栈”,为了腾出空间
  • 堆(Heap)
    保存的是对象、数组、new 都会在堆内存中开辟空间,并为这个空间分配一个地址值
    堆内存中的数据都是由默认值的
    整数:0
    小数:0.0
    字符:‘\u0000’
    布尔:false
    引用:null
  • 方法区(Method Area)
    代码的“预备区”,记录类的信息,以及方法的信息
    方法区中主要保存class文件以及其中的信息
    代码运行之前,需要先进内存(方法区)
  • 本地方法栈(Native Method Stack)
    本地方法对Java功能的扩充
    有很多功能,Java语言实现不了,所以就需要依靠本地方法完成(C语言编写)
  • 寄存器(PC register)

数组内存图

在这里插入图片描述
在这里插入图片描述

二维数组

动态初始化
数据类型【】【】 数组名 = new 数据类型【m】【n】
m:二维数组的长度
n:二维数组中每一个一维数组的长度;
在这里插入图片描述
静态初始化
数据类型【】【】 数组名 = new 数据类型【】【】{{…}}
简化:数据类型【】【】 数组名 = {{…}}

package alive.array;

/**
 * @Author zyj
 * @Date 2024/08/17 22:13
 * @Description
 */
public class Arr {
    public static void main(String[] args) {
       int [][] arr = {{1,2,3,4},{5,6,7,8},{9}};
    }
}

数组遍历

内存图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值