编程学习笔记——JAVA背景(一)

文章目录

  • 编程学习笔记——JAVA背景(一)
  • 编程学习笔记——JAVA注意事项(二)
    • (一)从Hello world 开始:
    • (二) Java 开发注意事项和细节说明:
    • (三)Java 转义字符和注释
  • 编程学习笔记——JAVA变量(三)
    • (一) Java 变量
      • (二) Java 运算
      • (三) 基本数据类型转换
      • (四) String 和基本类型转换
    • 编程学习笔记——Java 运算符 (四)
      • (一)算术运算符:
      • (二)关系运算符:
      • (三)逻辑运算符
      • (四)赋值运算符 :
      • (五)三元运算符
    • 编程学习笔记——Java 标识符、关键字、保留字(五)

内容来源:https://www.bilibili.com/video/BV1fh411y7R8?p=17

  1. Java 的诞生:

    1995年,sun公司发布了Java的第一个版本,如今更新到了Java17。其中Java8和Java11是长期更新的版本,因此是比较常用的两个版本。

  2. Java 的特性:
    1) Java 语言是面向对象的;
    2) Java语言是健壮的,它的强类型机制,异常处理,垃圾自动收集使其更能十分健壮;
    3) Java 语言是跨平台的;
    通常对一个Java 文件编译后得到的class文件可以在多个平台(Linux, Windows, Macos)上运行,其原因在于Java 的虚拟机机制。
    4) Java语言是解释性语言
    解释性语言 v.s. 编译型语言(c/c++) :解释性语言编译后的代码不能直接被机器执行,需要解释器来执行,编译型语言编译后的代码可以直接被机器执行。

  3. JVM(Java Virtual Machine): 不同的平台有不同的JVM,因此同一个Java文件可以通过JVM来解释翻译从而在不同平台上运行。

    Hello_World.java(源文件)---->(编译javac)----> Hello_World.class(字节码文件) ---->(运行)JVM —> Hello_World.exe (通过运行工具java.exe对字节码文件进行执行,本质就是将.class文件装载到JVM执行。

  4. 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 开发注意事项和细节说明:

  1. Java 源文件以.java为扩展名。源文件的基本组成部分是类(class)
  2. Java应用程序的执行入口是main()方法。它有固定的书写格式:
    public static void main(String [] args) {…}
  3. Java 语言严格区分大小写
  4. Java 方法由一条一条语句构成,每个语句以’;’ 结束
  5. 大括号都是成对出现的
  6. 一个源文件中足以多只能有一个public类。其他类的个数不限,编译后每一个类对应一个.class文件
  7. 如果源文件中包含一个public类,则文件名必须按该类命名!
  8. 一个源文件中给最多只能有一个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
[ ]
  • 整数类型细节:
  1. Java 各整数类型有固定的范围和字段长度,不受具体OS的影响,以保证Java程序的可移植性
  2. Java的整型常量默认为int型,声明long型常量需后加 ‘l’ 或 ‘L’: 错位写法 :int a = 1l; 正确写法: long a = 1l;
  3. 当把数赋给byte时,先判断是否在byte范围内,如果是就可以byte a = 10;
  4. Java程序中变量常声明为iint型,除非不足以表示大数,才用long
  5. bit: 计算机中的最小存储单位, byte: 计算机中基本存储单元.
  • 浮点数:
  1. 浮点数 = 符号位 + 指数位 + 尾数位 , 所以尾数部分可能丢失,造成精度损失(小数都是近似值)
  2. Java的浮点型常量默认位double类型,声明float型常量,须后加 ‘f’ 或 ‘F’ ;错误写法: float num = 1.1 ; double num = 1.1f; 正确写法: float num = 1.1f;
  3. 浮点数表示方法: 十进制: 5.12, 5.12f, .512
    科学计数法: 5.12e2 5.12e-2
  4. 浮点数使用陷阱:
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!");
}
  • 字符型:
  1. char c = 97; 会输出97所代表的字符
  2. 字符常量是用单引号括起来的单个字符
  3. Java中还允许使用转义字符 ‘\’ 来将其后的字符转变位特殊字符型常量
  4. 在Java中, char的本质是一个整数,在输出时,是unicode码对应的字符
  5. 可以直接给char赋一个整数,然后输出时,会按照对应的unicode字符输出
  6. 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;

    • 运算规则:

      1. 如果条件表达式为true, 运算后结果为表达式1;
      2. 如果条件表达式为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编程学习笔记(一)相关推荐

  1. Java 8 函数式编程学习笔记

    Java 8 函数式编程学习笔记 @(JAVASE)[java8, 函数式编程, lambda] Java 8 函数式编程学习笔记 参考内容 Java 8中重要的函数接口 扩展函数接口 常用的流操作 ...

  2. java 网络编程学习笔记

    java 网络编程学习笔记 C/S模式:客户端和服务器 客户端创建流程 1 1.建立Socket端点 2 3 Socket s = new Socket(绑定地址, 绑定端口); 2.确认源数据方式和 ...

  3. 【Java】函数式编程学习笔记——Stream流

    学习视频:https://www.bilibili.com/video/BV1Gh41187uR?p=1 (1)[Java]函数式编程学习笔记--Lambda表达式 (2)[Java]函数式编程学习笔 ...

  4. Java之GUI编程学习笔记六 —— AWT相关(画笔paint、鼠标监听事件、模拟画图工具)

    Java之GUI编程学习笔记六 -- AWT相关(画笔paint) 参考教程B站狂神https://www.bilibili.com/video/BV1DJ411B75F 了解paint Frame自 ...

  5. Lua 编程学习笔记

    文章目录 Lua 编程学习笔记 一.环境安装 二.Lua 基本语法 1. 注释 2. 标识符 3. 变量 4. 数据类型 5. Lua 运算符 三.循环与流程控制 1. 循环 2. 流程控制 四.函数 ...

  6. 尚学堂JAVA基础学习笔记_2/2

    尚学堂JAVA基础学习笔记_2/2 文章目录 尚学堂JAVA基础学习笔记_2/2 写在前面 第10章 IO技术 1. IO入门 2. IO的API 3. 装饰流 4. IO实战 5. CommonsI ...

  7. 计算机、程序和 Java 概述 学习笔记

    计算机.程序和java概述 学习笔记 1.1什么是计算机 简单来说:计算机就是 ' 存储 ' 和 ' 处理 ' 数据的电子设备. 计算机包括硬件( hardware ) 和软件( software) ...

  8. 大数据第二阶段Python基础编程学习笔记(待完善)

    大数据第二阶段Python基础编程学习笔记(待完善) 第一章 Python基础语法 3.8 1-1Python概述 python基础部分: ●Python基础语法: 标识符,关键字,变量,判断循环.. ...

  9. 尚学堂JAVA高级学习笔记_1/2

    尚学堂JAVA高级学习笔记 文章目录 尚学堂JAVA高级学习笔记 写在前面 第1章 手写webserver 1. 灵魂反射 2. 高效解析xml 3. 解析webxml 4. 反射webxml 5. ...

最新文章

  1. R语言ggplot2可视化分面图(facet_grid)、自定义缩小分面图标签栏的高度、但是不改变标签栏标签文本的大小、通过自定义设置可是胡图像的grobs参数
  2. python从字符串中提取数字_filter
  3. javascript构造函数类和原型prototype定义的属性和方法的区别
  4. 【Gamma】 Phylab 发布说明
  5. qpython 使用教程_python中spy++的使用超详细教程
  6. 软件poc测试方案,华为fusioncloud桌面云解决方案5.3poc测试方案v1.0
  7. 西门子CPU扩展以太网接口的一种解决方案
  8. java--实现j2cache二级缓存
  9. python画反比例函数_拟合一个反比例函数
  10. 工欲善其事,必先利其器篇-高效实现右滑退出功能
  11. 网名年终大盘点 轻舞飞扬和芙蓉系列已过时
  12. LeGO-LOAM运行kitti数据集
  13. 使用Docker一键部署MongoDB
  14. 干草堆(寒假每日一题 2)
  15. 关于数据导出成excel表
  16. 软件模拟中美gdp今后几年的变化情况
  17. SkeyeVSS智慧渣土可视化管理系统赋能渣土车辆智能化管理
  18. 估计标准误差syx_什么是判定系数r2和估计标准误差syx
  19. 英勇青铜5基金个人策略
  20. python 基于搜索引擎实现文章查重

热门文章

  1. fegin需要实现类_Fegin
  2. python 使用opencv 切割图片的白边(横切和竖切)
  3. augment增强:
  4. 饿了么被阿里巴巴收购了
  5. python+企业微信机器人把数据库数据发送到群的方法我悟了
  6. 物联卡中心:快手上买物联卡是真的吗?小心陷入“骗局”!
  7. 京东张政:内容理解在广告场景下的实践和探索
  8. Windows命令之bitsadmin.exe远程下载
  9. 手机怎样显示0的电量?
  10. 王者荣耀怎么做到经济领先呢