Java编程学习笔记(一)
编程学习笔记——JAVA背景(一)
文章目录
- 编程学习笔记——JAVA背景(一)
- 编程学习笔记——JAVA注意事项(二)
- (一)从Hello world 开始:
- (二) Java 开发注意事项和细节说明:
- (三)Java 转义字符和注释
- 编程学习笔记——JAVA变量(三)
- (一) Java 变量
- (二) Java 运算
- (三) 基本数据类型转换
- (四) String 和基本类型转换
- 编程学习笔记——Java 运算符 (四)
- (一)算术运算符:
- (二)关系运算符:
- (三)逻辑运算符
- (四)赋值运算符 :
- (五)三元运算符
- 编程学习笔记——Java 标识符、关键字、保留字(五)
内容来源:https://www.bilibili.com/video/BV1fh411y7R8?p=17
Java 的诞生:
1995年,sun公司发布了Java的第一个版本,如今更新到了Java17。其中Java8和Java11是长期更新的版本,因此是比较常用的两个版本。
Java 的特性:
1) Java 语言是面向对象的;
2) Java语言是健壮的,它的强类型机制,异常处理,垃圾自动收集使其更能十分健壮;
3) Java 语言是跨平台的;
通常对一个Java 文件编译后得到的class文件可以在多个平台(Linux, Windows, Macos)上运行,其原因在于Java 的虚拟机机制。
4) Java语言是解释性语言
解释性语言 v.s. 编译型语言(c/c++) :解释性语言编译后的代码不能直接被机器执行,需要解释器来执行,编译型语言编译后的代码可以直接被机器执行。JVM(Java Virtual Machine): 不同的平台有不同的JVM,因此同一个Java文件可以通过JVM来解释翻译从而在不同平台上运行。
Hello_World.java(源文件)---->(编译javac)----> Hello_World.class(字节码文件) ---->(运行)JVM —> Hello_World.exe (通过运行工具java.exe对字节码文件进行执行,本质就是将.class文件装载到JVM执行。
JDK:
JDK: Java Development kit, Java 开发工具包
JRE : Java Runningtiem Environment
JDK = JRE + Java开发工具(java, javac, javadoc, javap)
JRE = JVM + Java 核心类库
每个JDK中有许多package,每个package中有接口,类,异常。每个类下面有字段,构造器(构造方法), 成员方法(方法)。
编程学习笔记——JAVA注意事项(二)
(一)从Hello world 开始:
// 1. public class Hello表示 Hello 是一个public公有的类
// 2. public staic void main 表示主方法,是程序的入口
// 注: 程序中存在中文,编译时需要考虑编码问题
public class Hello{public static void main(String[] args){System.out.println("Hello World!");}
}
(二) Java 开发注意事项和细节说明:
- Java 源文件以.java为扩展名。源文件的基本组成部分是类(class)
- Java应用程序的执行入口是main()方法。它有固定的书写格式:
public static void main(String [] args) {…} - Java 语言严格区分大小写
- Java 方法由一条一条语句构成,每个语句以’;’ 结束
- 大括号都是成对出现的
- 一个源文件中足以多只能有一个public类。其他类的个数不限,编译后每一个类对应一个.class文件
- 如果源文件中包含一个public类,则文件名必须按该类命名!
- 一个源文件中给最多只能有一个public类。其他类的个数不限,也可以将main方法卸载非public类中,然后指定运行非public类,这样入口方法就是非public的main 方法
public class Hello{public static void main(String[] args){System.out.println("Hello World!");}
}
class test1{System.out.println("test1");
}
class test2{System.out.println("test2");
}
// javac Hello.java
// java Hello
// java test1
// java test2
(三)Java 转义字符和注释
Java常用的转义字符:
在控制台中输入tab可以快补全.
转义字符 | 作用 |
---|---|
\t | 一个制表位,实现对齐功能 |
\n | 换行符 |
\ | 一个\ |
" | 一个“ |
’ | 一个’ |
\r | 一个回车 |
Java 注释:
注释方式 | 基本格式 |
---|---|
单行注释 | //注释文字 |
多行注释 | /* 注释文字 */ |
- 文档注释:
注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档,一般写在类
/**
*@author xss
*@version 1.0
*/javadoc -d 文件夹名 -xx -yy _.java
标签 | 描述 | 示例 |
---|---|---|
@author | 标识一个类的作者 | @author description |
@deprecated | 指名一个过期的类或成员 | @deprecated description |
{@docRoot} | 指明当前文档根目录的路径 | Directory Path |
@exception | 标志一个类抛出的异常 | @exception exception-name explanation |
{@inheritDoc} | 从直接父类继承的注释 | Inherits a comment from the immediate surperclass. |
{@link} | 插入一个到另一个主题的链接 | {@link name text} |
{@linkplain} | 插入一个到另一个主题的链接,但是该链接显示纯文本字体 | Inserts an in-line link to another topic. |
@param | 说明一个方法的参数 | @param parameter-name explanation |
@return | 说明返回值类型 | @return explanation |
@see | 指定一个到另一个主题的链接 | @see anchor |
@serial | 说明一个序列化属性 | @serial description |
@serialData | 说明通过writeObject( ) 和 writeExternal( )方法写的数据 | @serialData description |
@serialField | 说明一个ObjectStreamField组件 | @serialField name type description |
@since | 标记当引入一个特定的变化时 | @since release |
@throws | 和 @exception标签一样. | The @throws tag has the same meaning as the @exception tag. |
{@value} | 显示常量的值,该常量必须是static属性。 | Displays the value of a constant, which must be a static field. |
@version | 指定类的版本 | @version info |
编程学习笔记——JAVA变量(三)
(一) Java 变量
- 变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号们可以找到房间,而通过变量名可以访问到变量(值)。
- 变量是程序的基本单位
- 变量 = 变量名 + 变量值 + 变量数据类型
- Java内置数据类型
基本数据类型 | 说明 | 值域 | 用法 |
---|---|---|---|
byte | byte数据类型是8位、有符号的,以二进制补码表示的整数 | -128 ~ 127(-2^7 ~ 2^7-1 | byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有int类型的四分之一 |
short | short数据类型是16位、有符号的,以二进制补码表示的整数 | -2^15 ~ 2^15-1 | Short数据类型也可以像byte那样节省空间。一个short变量是int型变量所占空间的二分之一 |
int | int数据类型是32位,有符号的,以二进制补码表示的整数 | -2^31 ~ 2^31-1 | 一般地整型变量默认为int类型 |
long | long数据类型是64位、有符号的,以二进制补码表示的整数 | -2^63 ~ 2^63-1 | 这种类型主要使用在需要比较大整数的系统上 |
float | float数据类型是单精度、32位、符合IEEE 754标准的浮点数 | 1位符号位+8位指数位(q)+23位底数位(b),即b^q | float在储存大型浮点数组的时候可节省内存空间 |
double | double数据类型是双精度、64位、符合IEEE 754标准的浮点数 | 1位符号位+11位指数位(q)+52位底数位,即b^q | 浮点数的默认类型为double类型 |
boolean | boolean数据类型表示一位的信息;只有两个取值:true和false | 默认值是false | – |
char | char类型是一个单一的16位Unicode字符 | 最小值是’\u0000’(即为0), 最大值是’\uffff’(即为65,535) | char数据类型可以储存任何字符 |
引用数据类型 | 说明 |
---|---|
class | - |
interface | |
[ ] |
- 整数类型细节:
- Java 各整数类型有固定的范围和字段长度,不受具体OS的影响,以保证Java程序的可移植性
- Java的整型常量默认为int型,声明long型常量需后加 ‘l’ 或 ‘L’:
错位写法 :int a = 1l; 正确写法: long a = 1l;
- 当把数赋给byte时,先判断是否在byte范围内,如果是就可以
byte a = 10;
- Java程序中变量常声明为iint型,除非不足以表示大数,才用long
- bit: 计算机中的最小存储单位, byte: 计算机中基本存储单元.
- 浮点数:
- 浮点数 = 符号位 + 指数位 + 尾数位 , 所以尾数部分可能丢失,造成精度损失(小数都是近似值)
- Java的浮点型常量默认位double类型,声明float型常量,须后加 ‘f’ 或 ‘F’ ;
错误写法: float num = 1.1 ; double num = 1.1f; 正确写法: float num = 1.1f;
- 浮点数表示方法: 十进制: 5.12, 5.12f, .512
科学计数法: 5.12e2 5.12e-2 - 浮点数使用陷阱:
double num1 = 2.7;
double num2 = 8.1 / 3;
System.out.println(num1); // 2.7
System.out.println(num2); // 接近2.7的一个小数,而不是2.7
// 使用的时候,当我们对运算结果是小数进行相等判断的时候要小心:
if (num1 == num2){System.out.println("Equal!");
}`在这里插入代码片`
//正确的写法应该是以两个数的差值的绝对值,在某个精度范围内判断
// ctrl + /注释快捷键
if (Math.abs(num1-num2) <= 1e-4){System.out.println("Equal!");
}
- 字符型:
char c = 97;
会输出97所代表的字符- 字符常量是用单引号括起来的单个字符
- Java中还允许使用转义字符 ‘\’ 来将其后的字符转变位特殊字符型常量
- 在Java中, char的本质是一个整数,在输出时,是unicode码对应的字符
- 可以直接给char赋一个整数,然后输出时,会按照对应的unicode字符输出
- char 类型是可以进行运算的,相当于一个整数,因为它都对应有unicode码
System.out.println('b' + 1); // 99
char c = 'b' + 1
System.out.println(c) // c
System.out.println((int)c) // 99
- 字符编码表
编码表 | 说明 |
---|---|
ASCII | 一个字节表示,一个128个字符, ACUII只用了128个而不是256 |
Unicode | 固定大小的编码, 使用两个字节来表示字符, 字母和汉字统一都是占用两个字节 |
utf-8 | 大小可变的编码 字母使用1个字节, 汉字使用3个字节 |
gbk | 可以表示汉字, 范围很狂,字母使用一个字节,汉字2个字节 |
gb2312 | 可以表示汉字, gb2312<gbk) |
big5码 | 繁体中文, 台湾,香港 |
- 布尔类型
true or false. Java 中不能用0或是非0整数来表示true或是false.
(二) Java 运算
- 加法运算:当左右两边都是数值型,则作加法运算; 当左右两边有一方是字符串,则做拼接运算.
(三) 基本数据类型转换
- 自动类型转换:
- 当 java 程序在进行赋值或者运算时,精度小的类型自动转换位精度大的数据类型。
- 数据类型按精度(容量)大小排序:
- char, int , long, float, double
- byte, short, int, long, float, double
int a = 'c'; double d =80;
- 自动类型转换的使用细节:
- 有多种类型的数据混合运算时,系统首先自动将所有数据转换城容量最大的那种数据类型,然后在进行计算
- 当我们把精度大的(容量大)的数据类型赋值给精度小的数据类型时,就会报错,反之就会进行自动数据类型转换
- (byte,short)和char之间不会相互自动转换
错误: byte n1 = 10; char n2 = n1;
- byte, short, char 他们三者可以计算,在计算的时候首先转换成int类型:
会报错: byte b2 = 1; short s1 = 1 short s2 = b2 + s1;
正确做法: int s2 = b2 + s1;`` 报错: byte b2 = 1; byte b3 = 2; byte b4 = b2 + b3; 只要有byte, 进行运算后会自动转换成int
- boolean 类型不参与转换
- 自动提升原则: 表达式结果的类型自动提升为 操作数中最大的类型
- 强制类型转换
- 自动类型转换的逆过程,将容量大的数据类型转换成容量小的数据类型,使用的时候要加上强制转换符(),但可能造成精度降低或溢出
- 强转符号只针对最近的操作数有效,往往会使用小括号来提升优先级
- char 类型可以保存int的常量值,但不能保存int的变量值,需要强转
char c = 100; int c2 =100; char c3 = c2; (错误) char c4 = (char)c2;
short s = 12 ; X s = s- 9;byte b = 10; X b= b + 11; b = (byte)(b + 11); char c = 'a';int i = 16;float d = .314F;double result = c+ i + d;byte b =16;short s =1;X short t = s + b;
(四) String 和基本类型转换
- 在程序开发中,经常需要将基本数据类型转换成String类型。或者将String类型转换成基本数据类型。
- 基本类型转换成String类型
- 语法:将基本类型的值 + “” 即可
int n1 = 100;float n2 = 1.1f;double n3 = 3.4;boolean b1 = true;String str1 = n1 + "";String str2 = n2 + "";String str3 = n3 + "";String str4 = b1 + "";
- String 类型转换成基本数据类型
- 通过基本类型的包装类调用parseXX 方法即可
Interger.parseInt("123");Double.parseDouble("123.1"");Float.parseFloat("123.45");Short.parseShort("12");Long.parseLong("12345");Boolean.parseBoolean("true");Byte.parseByte("12"):String str = "123";str.charAt(0); //将str的第一个字符转换成char
- 在将String类型转换成基本数据类型时,要确保String类型能够转换成有效数据
- 如果格式不正确,会抛出异常
编程学习笔记——Java 运算符 (四)
(一)算术运算符:
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
+ | 正号 | +7 | 7 |
- | 负号 | -7 | -7 |
+ | 加 | 9+9 | 18 |
- | 减 | 10-8 | 2 |
* | 乘 | 7*8 | 56 |
/ | 除 | 9/9 | 1 |
% | 取模 | 11%9 | 2 |
++ | 自增:先运算后取值 或是 先取值后运算 | ++a;a++; | - |
- - | 自减:先运算后取值 或是 先取值后运算 | - -a;a - -; | - |
+ | 字符串相加 | - | - |
- 取模运算公式: a % b = a - a / b *b
当a 是小数时, a % b = a - (int) a / b *b - 除法:
System.out.println (10/4); // 2System.out.println(10.0/4); // 2.5double d = 10/4;System.out.println(d); // 2.0
1.
int i = 1;
i = i++; // 规则使用临时变量:(1)temp = i;(2) i = i + 1; (3)i = temp;
System.out.println(i); // 1
2.
int i = 1;
i = ++i;
Sytem.out.println(i); // 2
(二)关系运算符:
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
== | 相等于 | 8==7 | false |
!= | 不等于 | 8!=7 | true |
< | 小于 | 8<7 | false |
> | 大于 | 8>7 | true |
<= | 小于等于 | 8<=7 | false |
>= | 大于等于 | 8>=7 | true |
instanceof | 检查是否是类的对象 | “right” instanceof String | true |
(三)逻辑运算符
(1) 短路与 &&, 短路或 ||, 取反 !
(2) 逻辑与 &, 逻辑或 |, ^ 逻辑异或
- 短路与和逻辑与区别: 短路与如果前面条件为false, 不会判断后面的条件,而逻辑与全会判断.
- 短路或和逻辑或区别:短路与如果前面条件为true, 不会判断后面的条件,而逻辑与全会判断
1.int a = 4, b = 9;if ( a< 1 && ++b < 50){System.out.println("!");} System.ourt.println("a= " + a + "b = " + b);
2.int a = 4, b = 9;if ( a< 1 & ++b < 50){System.out.println("!");} System.ourt.println("a= " + a + "b = " + b);
(四)赋值运算符 :
- = , +=, -=, *=, /=,%=,^=
- 赋值运算符会进行类型转换
byte b = 3;
b += 2 ; // b = (byte)(b + 2);
b = b + 2 ; //会报错
(五)三元运算符
基本语法:
条件表达式 ? 表达式 1 : 表达式2;- 运算规则:
- 如果条件表达式为true, 运算后结果为表达式1;
- 如果条件表达式为false,运算后结果是表达式2;
- 示例:
int test = 2>1 ? 2 : 1;
- 三元运算符使用时, 表达式1 和表达式2要为可以赋给接收变量的类型(或可以自动转换)
- 运算规则:
运算符优先级:
- 运算符有不同的优先级,下表中优先级高的在上面
- 下表中,只有单目运算符、赋值运算符是从右向左运算的
运算顺序 | 符号 |
---|---|
. () {} ; , | |
R->L | ++, - -, ~, !(data type) |
L->R | *, /, % |
L->R | +, - |
L->R | <<, >>, >>> 位移 |
L->R | <, > , <=, >=, instanceof |
L->R | ==, != |
L->R | & |
L->R | ^ |
L->R | I |
L->R | && |
L->R | II |
L->R | ?, : |
R->L | =, *=, /=. %= |
+=, -=, <<=, >>= | |
>>>=, &=, ^=, I= |
(), {} 等 > 单目运算 > 算术运算符 > 位移运算符 > 比较运算符 > 逻辑运算符 > 三元运算符 > 赋值运算符
编程学习笔记——Java 标识符、关键字、保留字(五)
- 标识符概念:
- Java 对各种变量、方法和类等命名时候使用的字符序列称为标识符
- 凡是可以自己取名字的地方都叫标识符
- 标识符命名规则:
- 由26个英文字母大小, 0-9, 或 $组成
- 数字不可以开头
- 不可以使用关键字和保留字,但能包含关键字和保留字
- Java中严格区分大小写,长度无限制
- 标识符中不能包含空格
- 标识符命名规范:
- 包名:多单词组成时,所有字母都小写: aaa.bbb.ccc
- 类名、接口名: 多单词组成时,所有单词的首字母大写: XxxYyyZzz
- 变量名、方法名: 多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写: xxxYyyZzz
- 常量名: 所有字母都大写。多单词时,每个单词用下划线连接:XXX_YYY_ZZZ
- Java关键字:
- 被Java语言赋予了特殊含义,用作专门用途的字符串
- 关键字中所有字母都为小写
- 用于定义数据类型的关键字:
class, interface, enum, byte, short, int, long, float, double, char, boolean, void - 用于定义数据类型值的关键字:
true, false, null - 用于定义流程控制的关键字:
if, else, switch, case, default, while, do, for, break, continue, return - 用于定义访问权限修饰符的关键字
private, protected, public - 用于定义类, 函数,变量修饰符的关键字
abstract, final, static, synchronized - 用于定义类与类之间关系的关键字
extends, implements - 用于定义建立实例以及引用实例,判断实例的关键字
new, this, super, instanceof - 用于异常处理的关键字
try, catch, finally, throw, throws - 用于包的关键字
package, import - 其他修饰符关键字
native, strictfp, transient, volatile, assert
- Java 保留字: 现有java版本未使用,但以后版本会作为关键字使用
Java编程学习笔记(一)相关推荐
- Java 8 函数式编程学习笔记
Java 8 函数式编程学习笔记 @(JAVASE)[java8, 函数式编程, lambda] Java 8 函数式编程学习笔记 参考内容 Java 8中重要的函数接口 扩展函数接口 常用的流操作 ...
- java 网络编程学习笔记
java 网络编程学习笔记 C/S模式:客户端和服务器 客户端创建流程 1 1.建立Socket端点 2 3 Socket s = new Socket(绑定地址, 绑定端口); 2.确认源数据方式和 ...
- 【Java】函数式编程学习笔记——Stream流
学习视频:https://www.bilibili.com/video/BV1Gh41187uR?p=1 (1)[Java]函数式编程学习笔记--Lambda表达式 (2)[Java]函数式编程学习笔 ...
- Java之GUI编程学习笔记六 —— AWT相关(画笔paint、鼠标监听事件、模拟画图工具)
Java之GUI编程学习笔记六 -- AWT相关(画笔paint) 参考教程B站狂神https://www.bilibili.com/video/BV1DJ411B75F 了解paint Frame自 ...
- Lua 编程学习笔记
文章目录 Lua 编程学习笔记 一.环境安装 二.Lua 基本语法 1. 注释 2. 标识符 3. 变量 4. 数据类型 5. Lua 运算符 三.循环与流程控制 1. 循环 2. 流程控制 四.函数 ...
- 尚学堂JAVA基础学习笔记_2/2
尚学堂JAVA基础学习笔记_2/2 文章目录 尚学堂JAVA基础学习笔记_2/2 写在前面 第10章 IO技术 1. IO入门 2. IO的API 3. 装饰流 4. IO实战 5. CommonsI ...
- 计算机、程序和 Java 概述 学习笔记
计算机.程序和java概述 学习笔记 1.1什么是计算机 简单来说:计算机就是 ' 存储 ' 和 ' 处理 ' 数据的电子设备. 计算机包括硬件( hardware ) 和软件( software) ...
- 大数据第二阶段Python基础编程学习笔记(待完善)
大数据第二阶段Python基础编程学习笔记(待完善) 第一章 Python基础语法 3.8 1-1Python概述 python基础部分: ●Python基础语法: 标识符,关键字,变量,判断循环.. ...
- 尚学堂JAVA高级学习笔记_1/2
尚学堂JAVA高级学习笔记 文章目录 尚学堂JAVA高级学习笔记 写在前面 第1章 手写webserver 1. 灵魂反射 2. 高效解析xml 3. 解析webxml 4. 反射webxml 5. ...
最新文章
- R语言ggplot2可视化分面图(facet_grid)、自定义缩小分面图标签栏的高度、但是不改变标签栏标签文本的大小、通过自定义设置可是胡图像的grobs参数
- python从字符串中提取数字_filter
- javascript构造函数类和原型prototype定义的属性和方法的区别
- 【Gamma】 Phylab 发布说明
- qpython 使用教程_python中spy++的使用超详细教程
- 软件poc测试方案,华为fusioncloud桌面云解决方案5.3poc测试方案v1.0
- 西门子CPU扩展以太网接口的一种解决方案
- java--实现j2cache二级缓存
- python画反比例函数_拟合一个反比例函数
- 工欲善其事,必先利其器篇-高效实现右滑退出功能
- 网名年终大盘点 轻舞飞扬和芙蓉系列已过时
- LeGO-LOAM运行kitti数据集
- 使用Docker一键部署MongoDB
- 干草堆(寒假每日一题 2)
- 关于数据导出成excel表
- 软件模拟中美gdp今后几年的变化情况
- SkeyeVSS智慧渣土可视化管理系统赋能渣土车辆智能化管理
- 估计标准误差syx_什么是判定系数r2和估计标准误差syx
- 英勇青铜5基金个人策略
- python 基于搜索引擎实现文章查重