百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

Java基础知识详细介绍01(java入门基础知识)

toyiye 2024-09-01 05:34 5 浏览 0 评论


0、Java工具包术语


术语名称

缩写

解释

Java Development Kit

JDK

编写 Java 程序的程序员使用的软件

Java Runtime Environment

JRE

运行 Java 程序的用户使用的软件

Server JRE


在服务器上运行 Java 程序的软件

Standard Edition

SE

用于桌面或简单服务器应用的 Java 平台

Enterprise Edition

EE

用于复杂服务器应用的 Java 平台

Micro Edition

ME

用于手机和其他小型设备的 Java 平台

Java FX


用于图形化用户界面的一个替代工具包,在 Oracle 的 Java SE 发布版本中提供

OpenJDK


Java SE的一个免费幵源实现,不包含浏览器集成或 Java FX

Java 2

J2

一个过时的术语,用于描述1998年?2006年之间的 Java 版本

Software Development Kit

SDK

一个过时的术语,用于描述1998年~2006年之间的 JDK

Update

u

Oracle的术语,表示 bug 修正版本

NetBeans


Oracle 的集成开发环境





1、Java程序简单规范

1)Java 区分大小写,即对大小写敏感;

2)类名只能是下划线和字母开头,其后可以是下划线、字母和数字;

3)类名命名规范需符合驼峰标识法;


2、三种注释方式

1)// ,行注释;

2)/* */,多行注释;

3)/** */,多行注释,会生成 javadoc 文档;


3、基础数据类型

1)java 中整型范围与平台机器无关;

2)c++ 中整型与机器有关,16位和32位整型范围是不一样的;


3.1、整型(有4种)

类型

存储

取值范围

byte

1个字节(8位)

short

2个字节(16位)

int

4个字节(32位)

long

8个字节(64位)

1)long 类型需加后缀 L 或 l,小于 int 类型最大值时可以不使用后缀,超过 int 类型最大值时必须加上后缀 L 或 l;

int 类型最大值:2147483647;

2)十六进制需加前缀 0x 或 0X;

3)八进制需加前缀 0;

3)二进制需加前缀 0b 或 0B;

4)数字之间可以加下划线,让人易懂,编译器编译的时候会自动去掉下划线;

下划线不能加在数字最前或最后;


3.2、浮点型(有2种)

类型

存储

取值范围

float

4个字节

(小数点有效位数是6~7位)

double

8个字节

(小数点有效位数是15位)

1)float 类型数值需加后缀 F 或 f,该类型很少使用,不加后缀默认是 double 类型;

2)double 类型数值可以加后缀 D 或 d;

3)数字之间可以加下划线,让人易懂,编译器编译的时候会自动去掉下划线;

下划线不能加在数字最前或最后;

4)可以十六进制表示浮点型,0x1.0p-3,p表示指数 2,3 表示次方;

0x1.0p-3 表示0x1 * 2的负3次方

0x1.0p3 表示0x1 * 2的3次方

0xap-3 表示0xa * 2的3次方

5)三个常量

正无穷大,Double.POSITIVE_INFINITY / Float.POSITIVE_INFINITY

负无穷大,Double.NEGATIVE_INFINITY / Float.NEGATIVE_INFINITY

不是数字 NaN(Not-a-Number),Double.NaN / Float.NaN

isInfinite(a) / isFinite(a) / Double.isNaN(0.0/0)


3.3、char类型(最好不要使用)

1)用单引号括起来;

2)可以使用十六进制表示

3)\u 是转义字符;


3.4、boolean类型

1)两种可选值true / false;


4、变量


4.1、变量命名规范

1)由字母和数字组成,字母包括一些26个字母之外的字符;

2)如何判断 Unicode 字符是 java 中的字母,使用如下方法:

Character.isJavaIdentifierStart('@')

Character.isJavaIdentifierPart('@')

3)不要在代码中使用 $ 符号来声明变量名称,尽管是可以的;

4)变量名称大小写敏感;


4.2、变量初始化

1)变量需要初始化才能使用;


4.3、常量

1)使用 final 关键字修饰常量,final 表示变量只能赋值一次,赋值后不能再被修改了,也就是常量了;

2)常量名称一般大写;

3)类常量,使用 static final 关键字修饰;

类常量需定义在类中,不能定义在方法内;

5、运算符

1)算术运算符:加(+) 、减(-)、乘(*)、除(/)、求余(% 也叫取模);

2)进行除(/)运算时:

两个操作数都是整型则是整数除法;

两个操作数有一个是浮点型时,表示浮点除法;

3)strictfp 关键字,表示采用最严格的计算;

strictfp 关键字修饰在方法上时,表示方法内的计算都是采用最严格的计算;

strictfp 关键字修饰在类上时,表示该类中的方法都是采用最严格的计算;


5.1、数学函数与常量

1)java.lang.Math 类

2)java.lang.StrictMath 类


5.2、数值类型之间的转换


1)实心箭头表示无信息丢失的转换;

2)虚线箭头表示可能会有精度损失的转换;

3)两个数值进行二元操作,会先自动转换为同一类型再计算;


5.3、强制类型转换

1)强制类型转换,会将小数部分截断将浮点值转换为整型;

2)对浮点数进行四舍五入,得到最接近的整型;

3)对浮点型数据进行加减乘除计算,小数点前面的 0 可以不写;


5.4、结合赋值和运算


5.5、自增、自减

1)前缀形式:++n / --n,先计算再使用;

2)后缀形式:n++ / n--,先使用再计算;

3)不建议在运算中使用自增、自减运算,容易混淆;


5.6、关系和 boolean 运算符

== / != / > / >= / < / <= / &&(短路与) / ||(短路或)

三目运算符;


5.7、位运算符

1)可以把整型用二进制来表示,能够很清楚的看懂位运算;

2)& 运算符:两个整数进行 &(与)运算,需对应的二进制位都是 1 计算的位值才为 1,其他情况都是 0;

也可用作与运算,类似 &&(短路与),只不过 & 运算符两边都会计算;

3)| 运算符:两个整数进行 |(或)运算,需对应的二进制位有一个是 1 计算的位值才为 1,都是 0 位值才是 0;

也可用作或运算,类似 ||(短路或),只不过 | 运算符两边都会计算;

4)^ 运算符:异或运算,对应的二进制位值相同则为 0,不同则为 1;

5)整型转二进制的方法,Integer.toBinaryString(13)

6)介绍 ~ 非运算之前,先了解原码、反码、补码

int 类型是32位,表示二进制时有32位;

long 类型是 64 位,表示二进制时有 64 位;

> 二进制前面的 0 不显示,左边第一位是符号位,1表示负数,0表示正数;

> 正数 5 对应的:

原码:00000000 00000000 00000000 00000101

反码:00000000 00000000 00000000 00000101(和原码一样)

补码:00000000 00000000 00000000 00000101(和原码一样)

> 负数 -5 对应的:

原码:10000000 00000000 00000000 00000101

反码:11111111 11111111 11111111 11111010(除符号位外各位在原码基础上取反)

补码:11111111 11111111 11111111 11111011(反码+1)

> 计算机内部是使用补码来存储和表示值的;

> 计算机硬件只有加数器,正数和负数、负数和负数相加时使用补码二进制实现加减计算;

7)~ 运算符,非运算,原位取反;

非运算计算过程:

1)正数 3 的补码:00000000 00000000 00000000 00000011

2)非运算原位取反:11111111 11111111 11111111 11111100(补码)

3)补码对应多少整型数值呢?自解析:

补码转反码:11111111 11111111 11111111 11111011(补码-1)

反码转原码:10000000 00000000 00000000 00000100(符号位不变)

我们发现原码对应的是整型数值 -4;

8)<< 运算符,位左移,右边补0

> 正数左移,2 << 3 = 16(相当于在2的基础上扩大了2的3次方倍,即2*8=16)

正数左移,2 << 3 = 16(相当于在2的基础上扩大了2的3次方倍,即2*8=16):

2 的补码:00000000 00000000 00000000 00000010(与原码一致)

左移 3 位:00000000 00000000 00000000 00010000

> 负数左移,-2 << 3 = -16(相当于在-2的基础上扩大了2的3次方倍,即-2*8=16

负数左移,-2 << 3 = -16:

-2的原码:10000000 00000000 00000000 00000010

-2的反码:11111111 11111111 11111111 11111101

-2的补码:11111111 11111111 11111111 11111110

左移 3 位的补码:11111111 11111111 11111111 11110000

对应反码:11111111 11111111 11111111 11101111

对应原码:10000000 00000000 00000000 00010000

> 移动位数需要先进行 32 位取模,即求余(long 类型需要 64 位取模);

9)>> 运算符,位右移;

> 正数右移,125 >> 3 = 15,左边补 0;

> 负数右移,-125 >> 3 = -16,左边补 1;

10)>>> 运算符,无符号位右移,正负数都是左边补 0;

? 正数右移,125 >> 3 = 15,左边补 0

? 负数右移,-125 >> 3 = -16,左边补 0


5.8、括号与运算符优先级

1)不使用括号时,是按照优先级来计算的;

2)同一级别的运算符是按出现的顺序从左至右进行计算的,右结合运算符除外;

3)右结合运算符是先计算右边的;


6、Math 类和 StrictMath 类


6.1、random() 方法

1)随机返回 [0, 1) 之间的 double 类型的值;


6.2、floor() 方法

1)Math.floor(1.2) 向下舍取整,保留一位小数;


6.3、floorDiv() 方法

1)求商,Math.floorDiv(13, 3) 求商,返回 int 或 long 型,下舍取整;


6.4、floorMod() 方法

1)求余,Math.floorMod(17, 6),求余;


6.5、其他方法

public static void main(String[] args) {
    int abs = Math.abs(-10);
    System.out.println("Math.abs(-10) 绝对值=" + abs);
    
    int addExact = Math.addExact(20, -3);
    System.out.println("Math.addExact(20, -3) 两数相加=" + addExact);
    
    double ceil1 = Math.ceil(-1.4);
    double ceil2 = Math.ceil(-1.5);
    double ceil3 = Math.ceil(1.5);
    double ceil4 = Math.ceil(1.4);
    System.out.println("Math.ceil(-1.4) 返回大于或等于指定浮点数中,最小的整数对应的浮点数=" + ceil1);
    System.out.println("Math.ceil(-1.5) 返回大于或等于指定浮点数中,最小的整数对应的浮点数=" + ceil2);
    System.out.println("Math.ceil(1.5) 返回大于或等于指定浮点数中,最小的整数对应的浮点数=" + ceil3);
    System.out.println("Math.ceil(1.4) 返回大于或等于指定浮点数中,最小的整数对应的浮点数=" + ceil4);
    
    double floor1 = Math.floor(-1.4);
    double floor2 = Math.floor(-1.5);
    double floor3 = Math.floor(1.5);
    double floor4 = Math.floor(1.4);
    System.out.println("Math.floor(-1.4) 返回小于或等于指定浮点数中,最大的整数对应的浮点数=" + floor1);
    System.out.println("Math.floor(-1.5) 返回小于或等于指定浮点数中,最大的整数对应的浮点数=" + floor2);
    System.out.println("Math.floor(1.5) 返回小于或等于指定浮点数中,最大的整数对应的浮点数=" + floor3);
    System.out.println("Math.floor(1.4) 返回小于或等于指定浮点数中,最大的整数对应的浮点数=" + floor4);
    
    int floorDiv1 = Math.floorDiv(17, 5);
    int floorDiv2 = Math.floorDiv(-17, 5);
    System.out.println("Math.floorDiv(17, 5) 返回小于或等于代数商中,最大的整数=" + floorDiv1);
    System.out.println("Math.floorDiv(-17, 5) 返回小于或等于代数商中,最大的整数=" + floorDiv2);
    
    int floorMod1 = Math.floorMod(17, 5);
    int floorMod2 = Math.floorMod(-17, 5);
    System.out.println("Math.floorMod(17, 5) 取模公式[x - (floorDiv(x, y) * y)],结果=" + floorMod1);
    System.out.println("Math.floorMod(-17, 5) 取模公式[x - (floorDiv(x, y) * y)],结果=" + floorMod2);
    
    int incrementExact1 = Math.incrementExact(17);
    int incrementExact2 = Math.incrementExact(-17);
    System.out.println("Math.incrementExact(17) 返回指定参数加+1=" + incrementExact1);
    System.out.println("Math.incrementExact(-17) 返回指定参数加+1=" + incrementExact2);
    
    int max1 = Math.max(18, 17);
    int max2 = Math.max(-18, 17);
    int max3 = Math.max(-18, -17);
    System.out.println("Math.max(18, 17) 取最大值=" + max1);
    System.out.println("Math.max(-18, 17) 取最大值=" + max2);
    System.out.println("Math.max(-18, -17) 取最大值=" + max3);
    
    int multiplyExact1 = Math.multiplyExact(3, 5);
    int multiplyExact2 = Math.multiplyExact(3, -5);
    int multiplyExact3 = Math.multiplyExact(-3, -5);
    System.out.println("Math.multiplyExact(3, 5) 两个指定参数相乘=" + multiplyExact1);
    System.out.println("Math.multiplyExact(3, -5) 两个指定参数相乘=" + multiplyExact2);
    System.out.println("Math.multiplyExact(-3, -5) 两个指定参数相乘=" + multiplyExact3);
    
    double pow1 = Math.pow(3, 2);
    double pow2 = Math.pow(-3, 2);
    System.out.println("Math.pow(3, 2) a的b次方=" + pow1);
    System.out.println("Math.pow(-3, 2) a的b次方=" + pow2);
    
    double random1 = Math.random();
    System.out.println("Math.random() 返回[0, 1)之间的随机数=" + random1);
    
    long round1 = Math.round(1.4);
    long round2 = Math.round(1.5);
    long round3 = Math.round(-1.4);
    long round4 = Math.round(-1.5);
    long round5 = Math.round(-1.6);
    System.out.println("Math.round(1.4) 返回最接近指定参数的整数=" + round1);
    System.out.println("Math.round(1.5) 返回最接近指定参数的整数=" + round2);
    System.out.println("Math.round(-1.4) 返回最接近指定参数的整数=" + round3);
    System.out.println("Math.round(-1.5) 返回最接近指定参数的整数(负数时注意小数点后的5)=" + round4);
    System.out.println("Math.round(-1.6) 返回最接近指定参数的整数=" + round5);
}


7、控制流程


7.1、块作用域


7.2、循环


7.3、多重选择 swithc/case

1)case 标签可以是如下:

char / byte / int / short 常量表达式;

枚举常量;

字符串字面量;


7.4、中断流程,跳出循环

1)带标签 break;

2)这种标签可以放置在任何地方,可以被任何流程控制块使用;

8、数组


8.1、声明数组


8.2、数组拷贝

1)Arrays.copyOf 方法是拷贝数组元素到新的数组中;


8.3、数组排序

1)Arrays.sort() 排序方法采用的是快速排序算法,该方法适用于数值类型的数组;


8.4、java.util.Arrays 类

1)Arrays.toString(arr) 数组转字符串;

2)Arrays.copyOf 数组拷贝;

3)Arrays.sort() 数组排序;

4)Arrays.binarySearch(a, 12),使用二分查找算法,在数组中查找指定元素,查到则返回下标,没查到则返回负值;

5)Arrays.fill(a, 2) 填充数组中所有元素为指定值;


8.5、多维数组


8.6、不规则数组

相关推荐

# Python 3 # Python 3字典Dictionary(1)

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如...

Python第八课:数据类型中的字典及其函数与方法

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值...

Python中字典详解(python 中字典)

字典是Python中使用键进行索引的重要数据结构。它们是无序的项序列(键值对),这意味着顺序不被保留。键是不可变的。与列表一样,字典的值可以保存异构数据,即整数、浮点、字符串、NaN、布尔值、列表、数...

Python3.9又更新了:dict内置新功能,正式版十月见面

机器之心报道参与:一鸣、JaminPython3.8的热乎劲还没过去,Python就又双叒叕要更新了。近日,3.9版本的第四个alpha版已经开源。从文档中,我们可以看到官方透露的对dic...

Python3 基本数据类型详解(python三种基本数据类型)

文章来源:加米谷大数据Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的"类型"是变...

一文掌握Python的字典(python字典用法大全)

字典是Python中最强大、最灵活的内置数据结构之一。它们允许存储键值对,从而实现高效的数据检索、操作和组织。本文深入探讨了字典,涵盖了它们的创建、操作和高级用法,以帮助中级Python开发...

超级完整|Python字典详解(python字典的方法或操作)

一、字典概述01字典的格式Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典的每个键值key=>value对用冒号:分割,每个对之间用逗号,...

Python3.9版本新特性:字典合并操作的详细解读

处于测试阶段的Python3.9版本中有一个新特性:我们在使用Python字典时,将能够编写出更可读、更紧凑的代码啦!Python版本你现在使用哪种版本的Python?3.7分?3.5分?还是2.7...

python 自学,字典3(一些例子)(python字典有哪些基本操作)

例子11;如何批量复制字典里的内容2;如何批量修改字典的内容3;如何批量修改字典里某些指定的内容...

Python3.9中的字典合并和更新,几乎影响了所有Python程序员

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

Python3大字典:《Python3自学速查手册.pdf》限时下载中

最近有人会想了,2022了,想学Python晚不晚,学习python有前途吗?IT行业行业薪资高,发展前景好,是很多求职群里严重的香饽饽,而要进入这个高薪行业,也不是那么轻而易举的,拿信工专业的大学生...

python学习——字典(python字典基本操作)

字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值...

324页清华教授撰写【Python 3 菜鸟查询手册】火了,小白入门字典

如何入门学习python...

Python3.9中的字典合并和更新,了解一下

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

python3基础之字典(python中字典的基本操作)

字典和列表一样,也是python内置的一种数据结构。字典的结构如下图:列表用中括号[]把元素包起来,而字典是用大括号{}把元素包起来,只不过字典的每一个元素都包含键和值两部分。键和值是一一对应的...

取消回复欢迎 发表评论:

请填写验证码