Java基础(手写笔记)
介绍
简单介绍
- Java是一个面向对象的语言
- Java语言是一个强类型语言
- Java的运行需要使用到JRE(java程序的运行时环境)
- java开发需要使用JDK(java开发工具包)
- 一个
.java
文件就是一个java类
JRE (Java Runtime Environment)
是Java程序的运行时环境,包含JVM和运行时所需要的核心类库。
想要运行一个已有的Java程序,那么只需要安装JRE即可。
JRE中包含了:
- JVM(Java运行虚拟机)
- 核心类库
JDK (Java Development Kit)
是Java程序开发工具包,包含Jre和开发人员使用的工具。
其中的开发工具:编译工具(javac)和运行工具(java)。
想要开发一个全新的java程序,那么必须安装JDK。
JDK中包含了:
- JRE
- 开发工具
JDK 与 JRE 的关系
JDK包含了JRE和开发工具
安装&配置
下载
推荐开发工具包下载地址:ZuluOpenJDK下载地址
官服开发包下载地址:OracleJDK
以上下载不来可以使用:编程宝库JDK
推荐下载JDK11,都2202年了
无论下载哪个版本,对于初学者来说都是可以的,因为开局你应该不会用到核心类库
之外的大家伙
安装
强烈推荐安装时使用默认配置安装
运行
运行java程序需要使用java命令运行
1 | java /程序/所在/目录/.../xxx.java |
文件名和类的关系
一个.java文件就是一个java类,.java文件里的内容必须有一个和.java文件同名的主(main)类
对应的内容
1 | /* |
注释
单行注释 //
1 | // 我是单行注释,不影响程序执行 |
多行注释 /* */
1 | /* |
关键字
- 关键字的字母 全部小写
- 常用的代码编辑器,针对关键字有特殊的颜色标记,非常直观。
以上圈起来的就是关键字
常量
概述
固定不变的值叫做常量,在程序运行过程中,其值不可以发生改变的量
常量分类
常量类型 | 说明 | 举例 |
---|---|---|
字符串常量 | 用双引号扩起来的内容 | “Hello”,”你好” |
整数常量 | 不带小数的数字 | 666, -99 |
小数常量 | 带小数的数字 | 13.14, -3.14 |
字符常量 | 用单引号扩起来的内容(只允许单字符) | ‘A’,’0’,’我’ |
布尔常量 | 布尔值,表示真假 | 只有两个值:true ,false |
空常量 | 一个特殊的值、空值 | 值是:null |
数据类型
计算机存储单元
我们知道计算机是可以用来存储数据的,但是无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位(bit)”,我们又称之为“比特位”,通常用小写的字母”b〞表示。而计算机中最小的存储单元叫“字节(byte)”通常用大写字母“B”表示,字节是由连续的8个位组成。
除了字节外还有一些常用的存储单位,大家比较熟悉:
1B (字节) = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
Java数据类型
java语言是强类型语言,对于每一种数据都给出了明确的数据类型,不同的数据类型也分配了不同的内存空间,所以他们表示的数据大小也是不一样的。
基本数据类型:
- 数值型:
- 整形 (byte, short, int, long)
- 浮点 (float, double)
- 字符 (char)
- 非数值型:
- 布尔 (boolean)
- 类 (class)
- 接口 (interface)
- 数组 ([])
数据类型内存占用和取值范围
数据类型 | 关键字 | 内存占用 | 群值范围 |
---|---|---|---|
整数 | byte(比特) | 1 | -128~127 |
整数 | short | 2 | -32768~32767 |
整数 | int | 4 | -2的31次方 到 2的31次方-1 |
整数 | long | 8 | -2的63次方 到 2到63次方-1 |
浮点数 | float | 4 | 负数:-3.402823E+38 到 -1.401298E-45;正数:4.9000000E-324 到 1.797693E+308 |
浮点数 | double | 8 | 负数:-1.797693E+308 到 -4.9000000E-324;正数:4.9000000E-324 到 1.797693E+308 |
字符 | char | 2 | 0-65535 |
布尔 | boolean | 1 | true, false |
基础使用:
1 | /* |
变量使用的注意事项
- 名字不能重复
- 变量未赋值,不能使用
- long类型的变量定义的时候,为了防止整数过大,后面要加l(因为使用long定义整形的时候,默认优先使用int类型定义数据)
- float类型的变量定义的时候,为了防止类型不兼容,后面要加f
基本数据类型int和lang的区别
int:整形
lang:长整形
基本数据类型float和double的区别
float:单精度浮点数
double:双精度浮点数
在内存中占有的字节数不同
- 单精度浮点数(float)在计算机内占4个字节
- 双精度浮点数(double)在计算机内占8字节
有效数字位数不同
- 单精度浮点数(float)有效数字8位(小数点往后8位)
- 双精度浮点数(double)有效数字16位(小数点往后16位)
数值取值范围不同
- 单精度浮点数(float)的表示范围:-3.40E+38~3.40E+38
- 双精度浮点数(double)的表示范围:-1.79E+308~-1.79E+308
在程序中处理速度不同
一般来说,CPU处理单精度浮点数(float)的速度要比处理双精度浮点数(double)快,如果不声明,默认小数为double类型,所如果要用float的话,必须进行强转
例如:
1
2
3
4
5
6
7// 在定义小数的时候,默认小数为double类型
double a = 1.12345;
// 强制定义float类型可使用如下方法
float f = (float)1.13;
// or
float f = 1.13f // 可将后边的f大写,效果一样
// 注意:使用单浮点类型的数据计算精度会有丢失
标识符
概念
标识符:就是给类,方法,变量起名字的符号。
定义规则
- 由 数字、字母、下划线(_) 和 美元符($)组成
- 不能以数字开头
- 不能是关键字
- 区分大小写
约定
小驼峰命名法:
- 约定1:标识符是一个单词的时候,首字母小写
- 范例1:
name
- 约定2:标识符由多个单词组成的时候,第一个单词首字母小写,其他单词首字母大写
- 范例2:
firstName
大坨峰命名法:
- 约定1:标识符是一个单词的时候,首字母大写
- 范例1:
Student
- 约定2:标识符由多个单词组成的时候,每个单词的首字母大写
- 范例2:
GoodStudent
类型转换
自动类型转换
把一个表示数据范围小的数值或者变量赋给另一个表示数据范围大的变量
例:double d = 10;
基本数据数据范围图
注意:
小类型与大类型参与运算时会自动转换成大类型
byte和short类型不会自动转换成char类型
强制类型转换
把一个数据范围大的数值或者变量赋值给另一个表示数据范围小的变量
- 格式:目标数据类型变量名 = (目标数据类型)值或者变量
- 例:int k = (int)88.88;
1 | // 定义一个int类型的变量,将double类型的数据88.88保存进去 |
强制类型转换,由大数据类型转换到小数据类型,不推荐,因为会有数据丢失
算数运算符
运算符:对常量或者变量进行操作的符号
表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。
举例说明:
1 | int a = 10; |
+: 是运算符,并且是算数运算符
a + b: 是表达式,由于+是算数运算符,所以这个表达式叫算数表达式
符号 | 作用 | 说明 |
---|---|---|
+ | 加 | 参看小学一年级 |
- | 减 | 参看小学一年级 |
* | 乘 | 参看小学二年级,与”x”相同 |
/ | 除 | 参看小学二年级,与”÷”相同 |
% | 取余 | 获取的是两个数据做出发的余数 |
注意⚠️:
/
和%
的区别:两个数据做除法,/
取结果的商,%
取结果的余数。
整数操作只能得到整数,要想得到小数,必须有浮点数参与运算。
字符”+”操作
拿字符在计算机底层对应的数值(ASCII码)来进行计算的
‘A’ -> 65 A-Z对应的ASCII码的值是连续的
‘a’ -> 97 a-z对应的ASCII码的值是连续的
‘0’ -> 48 0-9对应的ASCII码的值是连续的
算数表达式中包含多个基本数据类型的值的时候,整个算数表达式的类型会自动进行提升。
byte类型、short类型和char类型将被提升到int类型
整个表达式的类型自动提升到表达式中最高等级操作数同样的类型
等级顺序(从小到大):
*重点*
byte、short、char -> int -> long -> float -> double
1 | public class OperatorDemo { |
字符串的”+”操作
当”+”操作出现字符串时,这个”+”是字符串链接符,而不是算数运算符。
- “国窖”+1573
在多个数据进行”+”操作时,按从左到右逐个执行算数运算,直到遇到字符串类型的数据的时候才进行字符串拼接。
- 2008 + 1 + ‘的第一场雪’
1 | public class OperatorDemo03 { |
赋值运算符
符号 | 作用 | 说明 |
---|---|---|
= | 赋值 | a=10,将10赋值给a |
+= | 加后赋值 | a+=b,将a+b的值赋给a |
-= | 减后赋值 | a-=b,将a-b的值赋给a |
*= | 乘后赋值 | a*=b,将axb的值赋给a |
/= | 除后赋值 | a/=b,将a÷b的值赋给a |
%= | 取余后赋值 | a%=b,将a÷b的余数给a |
注意⚠️:拓展的赋值运算符隐含了强制类型转换
1 | public class OperatorDemo04{ |
自增自减运算符
符号 | 作用 | 说明 |
---|---|---|
++ |
自增 | 变量的值加1 |
-- |
自减 | 变量的值减1 |
1 | public class OperatorDemo05 { |
注意⚠️:
++和–既可以放在变量的后边,也可以放在变量的前边。
单独使用的时候,++和–无论是放在变量 的前边还是后边,结果是一样的。
参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者–操作。
参与操作的时候,如果放在变量的前边,先拿变量做++或者–,后拿变量参与操作。
参与操作的时候,运算是从左往右进行的,请酌情计算