《Java基础入门》笔记——01 Java初步

1 关于Java

1.1 Java的发展简史

  • Java之父——Gosling(高司令)
  • 98年,Java2企业平台J2EE发布
  • 99年发布J2SE(标准版)、J2EE(企业版)、J2ME(微型版)
  • 04年,发布JavaSE5.0
  • 09年,Oracle收购Sun
  • 14年,发布JavaSE8

1.2 Java语言的特点

  • 简单。丢弃了C++中的运算符重载、多重继承 等复杂概念;将引用替代指针;提供自动的垃圾回收机制,不必忧心内存管理
  • 面向对象。只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制
  • 安全。不支持指针,不能非法访问内存
  • 跨平台。Java程序一次编译、处处可用,可移植性好。程序只需开发一次,就可以在各种安装了JVM的系统平台上运行(PS:Java程序跨平台,但JVM不跨平台,有各种版本,如Windows、Linux等)
  • 支持多线程。程序中有多个任务可以并发执行
  • 强类型语言。使用变量前需要声明类型

1.3 Java的关键术语

  • Architecture neutral 结构中立
  • Object oriented 面向对象
  • Portable 可移植
  • Distributed 分布式的
  • High performance 高性能
  • Multithreaded 多线程的
  • Robust 健壮
  • Dynamic 动态的
  • API(Application Programming Interface) 应用程序编程接口
  • Java SE(Java Platform,Standard Edition) Java平台标准版
  • Java EE(Java Platform,Enterprise Edition) Java平台企业版
  • Java ME(Java Platform,Micro Edition) Java平台微型版
  • JVM(Java Virtual Machine) 虚拟机
  • JDK(Java Development Kit) Java开发工具包
  • JRE(Java Runtime Environment) Java运行环境

1.4 Java的运行平台

  1. Java SE (Java Platform,Standard Edition)
    用于开发桌面应用
  2. Java EE (Java Platform,Enterprise Edition)
    用于开发企业级应用,被广泛认可
  3. Java ME (Java Platform,Micro Edition)
    用于开发移动设备上的软件,不被认可,取而代之的是使用Android 或 IOS

1.5 JDK详述

1.5.1 JDK发展史

在这里插入图片描述
LTS版本有 JDK 8、11、17,很多企业还在使用JDK 8

1.5.2 JDK的构成

  1. 开发工具(javac、java等)
  2. Java核心类库
  3. JVM(Java程序运行的地方)
    PS:其中 2 和 3 构成JRE

1.5.3 Java安装目录

  1. bin
    用于存放一些可执行程序,包含javac.exe(编译程序)、java.exe(执行程序)、jar.exe(打包工具)、javadoc.exe(文档生成工具)
  2. db
    一个小型数据库
  3. jre
    Java运行时环境的根目录,包含JVM、运行时的类包、Java应用启动器、bin目录
  4. include
    用于存放启动JDK所需的C头文件
  5. lib
    用于存放Java类库或库文件
  6. src.zip文件
    包含JDK核心类的源代码

1.6 Java源文件

  • 后缀名为".java"
  • 基本组成是类
  • 最多只有一个public类,其他类个数不限。若源文件包含一个public类,文件名要和类名相同
  • 程序执行入口是main( )方法

PS:在同一个Java源文件中,public类和main方法都是唯一的

2 基础知识

2.1 标识符命名规则

(1)标识符可由字母、数字、下划线、美元符号($)组成
(2)不能以数字开头
(3)不能以关键字命名
(4)命名时尽量见名知意
(5)包名(package)一律小写,如test
(6)常量名一律大写,单词间用下划线连接,如DAY_OF_MONTH
(7)类名接口名单词首字母大写,如ArrayList(大驼峰)
(8)变量名方法名采用“驼峰命名法”,如getMaxValue(小驼峰)

2.2 注释

 // 单行注释
 /*……*/ 多行注释
 /**……*/ 文档注释

2.3 常量

  1. 整型
    (1)十进制
    (2)二进制。以0b开头,如0b01111111
    (3)八进制。以0开头,0177
    (4)十六进制。以0x开头,0x7F
  2. 浮点型
    (1)float。后缀为f/F,如1.3f
    (2)double。后缀为d/D,如3.6d
  3. 字符型
    (1)普通字符。如’a’
    (2)转义字符。如’\n’
  4. 字符串型。如"peace"
  5. 布尔型。true,false
  6. null型,表示对象的引用为空

2.4 变量

2.4.1 基本数据类型(4大类8种)

  1. 整型
    (1)byte。大小:1字节(8位),取值范围:-128~127
    (2)short。大小:2字节(16位),取值范围:-32768~32767
    (3)int(默认类型)。大小:4字节(32位),取值范围:-21亿↗~21亿↗
    (4)long(后缀:l/L)。大小:8字节(64位),取值范围:-900亿亿↗~900亿亿↗
    PS:
    (1)Java7开始,加前缀0b可书写二进制数,如0b1001→9
    (2)Java7开始,数字可加下划线以便阅读,如1_000_000一百万

  2. 浮点型
    (1)float(后缀:f/F)
    大小:4字节(32位),有效位数:6~7位
    (2)double(默认类型)
    大小:8字节(64位),有效位数:15位
    PS:表数形式
    (1)小数
    (2)指数,如1e-6

  3. 字符型
    char。大小:2字节,取值范围:0~65535

  4. 布尔型
    boolean,取值:true、false

2.4.2 引用数据类型

  • 类(class)
  • 接口(interface)
  • 数组
  • 枚举(enum)
  • 注解(annotation)

2.5 运算符

2.5.1 逻辑运算符

  • &(与)、|(或)、^(异或)
  • !(非)、&&(短路与)、||(短路或)
    PS:实际开发中、常用的逻辑运算符是:&& 、 || 、 !

2.5.2 位运算符

  1. 按位与 &

  2. 按位或 |

  3. 按位异或 ^
    (1)交换律 a ^ b = b ^ a
    (2)结合律 (a ^ b) ^ c = a ^ ( b ^ c)
    (3)n ^ n = 0;n ^ 0 = n
    (4)自反性a ^ b ^ b = a ^ 0 = a

  4. 按位取反~

  5. 左移位<<

  6. (有符号)右移位>>
    移位时带符号,高位补符号位(正数补0,负数补1,因为数据在计算机中用补码表示)

  7. (无符号)右移位>>>
    移位时不带符号,高位补0

tips:位运算骚操作
(1)判断奇偶数
将该数和1作&运算,值为0→偶数;值为1→奇数
(2)判断二进制某位是0/1
将该位数右移到末尾,用判断奇偶性的方法
(3)交换两个整型变量值

a = a ^ b
b = a ^ b
a = a ^ b

2.5.3 扩展赋值运算符

在这里插入图片描述
PS:扩展的赋值运算符隐含了强制类型转换。

2.5.4 运算符优先级

在这里插入图片描述

2.6 switch语句

switch(表达式)…
PS:Java的上述表达式支持byte、short、int、char、enum、String类型(C/C++仅支持char和int)

3 方法

3.1 方法的定义

修饰符 返回值类型 方法名(参数列表){
    //执行语句
    return 返回值;
}

PS:修饰符
1.访问权限
(1)private:当前类访问级别(访问范围仅限于本类)
(2)default:包访问级别(同一个包下的类都可以访问)
(3)protected:子类访问级别(同一个包下的其他类,以及不同包中该类的子类可以访问)
(4)public:公共访问级别(可以被所有类访问,不论是否在同一个包中)
若一个类或类的成员没有访问控制修饰符,则默认为default,访问范围仅限本包内

2.静态修饰符static
3.最终修饰符final

3.2 方法的重载

  • 方法名相同,返回值和参数列表有所不同
public class MethodOverride {
	public static void main(String[] args) {
		 System.out.println("sum1 = " +  add(1, 2));
         System.out.println("sum2 = " + add(1, 2, 3));
	     System.out.println("sum3 = " + add(1.2, 2.3));
	}
	// 两个整数相加
    public static int add(int x, int y) {
        return x + y;
    }
    // 三个整数相加
    public static int add(int x, int y, int z) {
        return x + y + z;
    }
    // 两个小数相加
    public static double add(double x, double y) {
        return x + y;
    }
}

3.3 方法的递归

public class Demo {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		System.out.println("1+2+……+" + n +" = " + sum(n));
	}
	
	//计算1+2+……+n
	public static int sum(int n) {
		if(n == 1)	return 1;	//递归出口
		return n + sum(n-1);	//子问题
	}
}

4 数组

4.1 一维数组的定义

方式一:

int[] arr = new int[4];      //定义可以存储4个整数的数组,自动初始化为0

方式二:

int [] arr = new int[]{1, 2, 3, 4};    //动态分配内存并初始化

方式三:

int [] arr = {1, 2, 3, 4};   //静态初始化 

4.2 二维数组的定义

方式一:

int [][] arr = new int[3][4];    //定义一个3行4列的二维数组

方式二:

int [][] arr = new int[3][];    //定义一个3行的二维数组,列数不定

方式三:

int [][] arr = {{1, 2}, {3, 4, 5}, {6, 7, 8, 9, }};    //定义一个二维数组并初始化
  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在逃八阿哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值