IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java学习笔记(正在更新) -> 正文阅读

[Java知识库]java学习笔记(正在更新)

JAVA笔记

java入门

java简介

? java是纯粹的面向对象的程序设计语言。作为一门特殊的语言,不仅有编译型语言的特性也有解释型语言的特性,它需要先编译再通过JVM解释才可以执行。因为JVM,导致Java具有良好的跨平台性。可以做到一次编译,多处执行。

java的主要特点可以用下面的11个关键术语进行概括:

  1. 简单性

  2. 面向对象

  3. 分布性

  4. 健壮性

  5. 安全性

  6. 体系结构中立

  7. 可移植性
  8. 解释型

  9. 高性能

  10. 多线程

  11. 动态性

注释

java中的注释不会出现在可执行程序当中,所以为了使代码更加具有可读性,最好可以多加注释,注释一共有如下三种。

//:单行注释

/ */*:多行注释

/ */**:doc注释,这种注释可以用来自动生成文档。

? @author:作者

? @return:返回

? @thorw:抛出异常

? @parm:参数

? @version:版本号

数据类型

Java是一种强类型语言。这就意味着必须为每一个变量声明一种类型。在Java中,一共有8种基本类型(primitive type),其中有4种整型、2种浮点型、1种用于表示字符单元的字符类型char和1种用于表示真值的boolean类型。

基本数据类型

整型

整型用于表示没有小数部分的数值,它允许是负数。Java提供了4种整型,具体内容如表所示。

类型存储需求取值范围
int4字节-2 147 483 648~2 147 483 647(刚刚超过20亿)
short2字节-32 768~32 767
long8字节-9 223 372 036 854 775 808~9 223 372 036 854 775 807
byte1字节-128~127

长整型数值有一个后缀L或l(如4000000000L)。十六进制数值有一个前缀0x或0X(如0xCAFE)。八进制有一个前缀0,例如,010对应八进制中的8。很显然,八进制表示法比较容易混淆,所以建议最好不要使用八进制常数。

从Java 7开始,加上前缀0b或0B就可以写二进制数。例如,0b1001就是9。另外,同样是从Java 7开始,还可以为数字字面量加下划线,如用1_000_000(或0b1111_0100_0010_0100_0000)表示一百万。这些下划线只是为了让人更易读。Java编译器会去除这些下划线。

浮点类型

浮点类型用于表示有小数部分的数值。在Java中有两种浮点类型,具体内容如表所示。

类型存储需求取值范围
float4字节大约 +3.402 823 47E+38F(有效数为6~7位)
double8字节大约 +1.797 693 134 862 315 70E+308(有效数为15位)

double类型的数值精度是float类型的两倍(有人称之为双精度数值)。绝大部分应用程序都采用double类型。在很多情况下,float类型的精度很难满足需求。实际上,只有很少的情况适合使用float类型,例如,需要单精度数据的库,或者需要存储大量数据。

float类型的数值有一个后缀F或f(例如,3.14F)。没有后缀F的浮点数值(如3.14)默认为double类型。当然,也可以在浮点数值后面添加后缀D或d(例如,3.14D)来强调这是一个double类型。

注意,Java没有任何无符号(unsigned)形式的int、long、short或byte类型。

字符类型

char类型原本用于表示单个字符。不过,现在情况已经有所变化。如今,有些Unicode字符可以用一个char值描述另外一些Unicode字符则需要两个char值

char类型的字面量值要用单引号括起来。例如:'A’是编码值为65所对应的字符常量。它与"A"不同,"A"是包含一个字符A的字符串。char类型的值可以表示为十六进制值,其范围从\u0000到\Uffff。例如:\u2122表示注册符号(TM),\u03C0表示希腊字母π。

除了转义序列\u之外,还有一些用于表示特殊字符的转义序列,请参看表。所有这些转义序列都可以出现在加引号的字符字面量或字符串中。例如,’\u2122’或"Hello\n"。转义序列\u还可以出现在加引号的字符常量或字符串之外(而其他所有转义序列不可以)。

转义序列名称unicode值
\b退格\u0008
\t制表\u0009
\n换行\u000a
\r回车\u000d
\"双引号\u0022
\’单引号\u0027
\\反斜杠\u005c

boolean类型

(布尔)类型有两个值:false和true,用来判定逻辑条件。整型值和布尔值之间不能进行相互转换

引用数据类型

字符串String

从概念上讲,java字符串就是Unicode字符序列。是一个字符串常量

特点:

  1. 字符串内容永不可变。

  2. 从效果上看是字符数组,但本质上是字节数组。

  3. 因为字符串是不可变的,所以字符串是可以共享的。

三种构造方法:

Public String(); 创建一个空白字符串。

Public String(byte[] array); 根据字节数组的内容来创建字符串。

String str = “hello”; 直接创建(最常用)

String API

java.lang.String

返回类型方法描述
charcharAt(int index)返回指定索引处的 char值。
intcodePointAt(int index)返回指定索引处的字符(Unicode代码点)。
intoffsetByCodePoints(int index, int codePointOffset)返回此 String中的索引,该索引从给定的 index偏移 codePointOffset代码点。
intcompareTo(String anotherString)按字典顺序比较两个字符串。
IntStreamcodePoints()将这个字符串的码点作为流返回,调用toArray将他们放到一个数组。
StringString(int[] codePoints, int offset, int count)分配新的 String ,其中包含 Unicode code point数组参数的子数组中的字符。
booleanisEmpty()返回 true ,当且仅当length()0
booleanisBlank()如果字符串为空或仅包含空格,则返回true,否者返回false。
booleanequals(Object obj)判断值是否相等
booleanequalsIgnoreCase(Object obj)判断值是否相等,忽略大小写
booleanstartsWith(String prefix)判断字符串是否以prefix为开头
booleanendsWith(String suffix)判断字符串是否以suffix为开头
intindexOf(int ch)返回指定字符第一次出现的字符串中的索引。
intindexOf(int ch, int fromIndex)返回指定字符第一次出现的此字符串中的索引,从指定索引处开始搜索。
intindexOf(String str)返回指定子字符串第一次出现的字符串中的索引。
intindexOf(String str, int fromIndex)从指定的索引处开始,返回指定子字符串第一次出现的字符串中的索引。
intlastIndexOf(int ch)返回指定字符最后一次出现的字符串中的索引。
intlastIndexOf(int ch, int fromIndex)返回指定字符最后一次出现的字符串中的索引,从指定的索引开始向后搜索。
intlastIndexOf(String str)返回指定子字符串最后一次出现的字符串中的索引。
intlastIndexOf(String str, int fromIndex)返回指定子字符串最后一次出现的字符串中的索引,从指定索引开始向后搜索。
intlength()返回字符串的字符数
intcodePointCount(int beginIndex, int endIndex)指定索引之间的码点个数
Stringreplace(CharSequence target, CharSequence replacement)将此字符串中与文字目标序列匹配的每个子字符串替换为指定的文字替换序列。
StringreplaceAll(String regex, String replacement)将给定替换的给定 regular匹配的此字符串的每个子字符串替换。
StringreplaceFirst(String regex, String replacement)将给定替换的给定 regular匹配的此字符串的第一个子字符串替换。
Stringsubstring(int beginIndex)返回一个字符串,该字符串是此字符串的子字符串。
Stringsubstring(int beginIndex, int endIndex)返回一个字符串,该字符串是此字符串的子字符串。
StringtoLowerCase()使用默认语言环境的规则将此 String所有字符转换为小写。
StringtoUpperCase()使用默认语言环境的规则将此 String所有字符转换为大写。
Stringtrim()返回一个字符串,其值为此字符串,删除了所有前导和尾随空格,其中space被定义为其代码点小于或等于 'U+0020' (空格字符)的任何字符。
Stringstrip()返回一个字符串,其值为此字符串,并删除了所有前导和尾随空格 。
static Stringjoin(CharSequence delimiter, CharSequence… elements)返回由 CharSequence elements的副本组成的新String,该副本与指定的 delimiter的副本连接在一起。
Stringrepeat(int count)返回一个字符串,其值为此字符串的串联重复 count次。
字符串构建StringBuild

是一个可编辑String类,在原本字符串上进行修改,而不必重新创建对象

类型方法描述
StringBuilderreverse()使此字符序列被序列的相反字符替换。
StringBuilderappend(boolean b)将boolean 参数的字符串表示形式追加到序列中。
StringBuilderappend(char c)将char 参数的字符串表示形式追加到此序列。
StringBuilderappend(char[] str)将char数组参数的字符串表示形式追加到此序列。
StringBuilderappend(char[] str, int offset, int len)将chararray参数的子数组的字符串表示形式追加 到此序列。
StringBuilderappend(double d)将double 参数的字符串表示形式追加到此序列。
StringBuilderappend(float f)将float 参数的字符串表示形式追加到此序列。
StringBuilderappend(int i)将int 参数的字符串表示形式追加到此序列。
StringBuilderappend(long lng)将long 参数的字符串表示形式追加到此序列。
StringBuilderappend(CharSequence s)将指定的字符序列附加到this Appendable。
StringBuilderappend(CharSequence s, int start, int end)将指定的子CharSequence序列附加到此序列。
StringBuilderappend(Object obj)追加Object参数的字符串表示形式。
StringBuilderappend(String str)将指定的字符串附加到此字符序列。
StringBuilderappend(StringBuffer sb)将指定的值追加StringBuffer到此序列。

var

java10新特性,可以不需要声明具体的类型,自动根据赋值类型判断。

ArrayList<Object> objects = new ArrayList<>();
var a=objects;
System.out.println(a.getClass().getSimpleName());

变量与常量

变量

在Java中,每个变量都有一个类型(type)。在声明变量时,变量的类型位于变量名之前。每个声明以分号结束。由于声明是一条完整的Java语句,所以必须以分号结束。

变量名必须是一个以字母开头并由字母或数字构成的序列。需要注意,与大多数程序设计语言相比,Java中“字母”和“数字”的范围更大。字母包括’A’~’Z’、‘a’~’z’、’_’、’$'或在某种语言中表示字母的任何Unicode字符。+‘和’ '这样的符号不能出现在变量名中,空格也不行。变量名中所有的字符都是有意义的,并且大小写敏感变量名的长度基本上没有限制

提示:尽管$是一个合法的Java字符,但不要在你自己的代码中使用这个字符。它只用在Java编译器或其他工具生成的名字中。

另外,不能使用Java保留字作为变量名。

可以在一行中声明多个变量,不过,不提倡使用这种风格。逐一声明每一个变量可以提高程序的可读性。

注释:如前所述,变量名对大小写敏感,例如,hireday和hireDay是两个不同的变量名。在对两个不同的变量进行命名时,最好不要只存在大小写上的差异。

变量初始化

声明一个变量之后,必须用赋值语句对变量进行显式初始化,千万不要使用未初始化的变量。

要想对一个已经声明过的变量进行赋值,就需要将变量名放在等号(=)左侧,相应取值的Java表达式放在等号的右侧。也可以将变量的声明和初始化放在同一行中。

最后,在Java中可以将声明放在代码中的任何地方。

在Java中,变量的声明尽可能地靠近变量第一次使用的地方,这是一种良好的程序编写风格。

常量

在Java中,利用关键字final指示常量。

关键字final表示这个变量只能被赋值一次。一旦被赋值之后,就不能够再更改了。习惯上,常量名使用全大写

在Java中,经常希望某个常量可以在一个类中的多个方法中使用,通常将这些常量称为类常量。可以使用关键字static final设置一个类常量。下面是使用类常量的示例:

需要注意,类常量的定义位于main方法的外部。因此,在同一个类的其他方法中也可以使用这个常量。而且,如果一个常量被声明为public,那么其他类的方法也可以使用这个常量。

枚举类型

枚举类型可以看做一组常量,当初始化没有赋值时,默认就是枚举名的字符串,便于使用时的区分。

运算符

运算符用于连接值。在Java中,使用算术运算符+、-、*、/表示加、减、乘、除运算。当参与/运算的两个操作数都是整数时,表示整数除法;否则,表示浮点除法。整数的求余操作(有时称为取模)用%表示。例如,15/2等于7,15%2等于1,15.0/2等于7.5。

需要注意,整数被0除将会产生一个异常,而浮点数被0除将会得到Infinity。0除以0是NaN

数学函数与常量

在Math类中,包含了各种各样的数学函数。在编写不同类别的程序时,可能需要的函数也不同。

要想计算一个数值的平方根,可以使用sqrt方法:

double sqrt = Math.sqrt(4);//print 2.0

在Java中,没有幂运算,因此需要借助于Math类的pow方法。

double pow = Math.pow(5,2);

求余数

为了更准确的计算正负数之间的求余问题,推荐使用floorMod方法。

floorMod(+4, -3) == -2;   and (+4 % -3) == +1
floorMod(-4, +3) == +2;   and (-4 % +3) == -1
floorMod(-4, -3) == -1;   and (-4 % -3) == -1 

Math类提供了一些常用的三角函数:

double sin = Math.sin(90);
double cos = Math.cos(90);
double tan = Math.tan(90);
double atan = Math.atan(90);
double v = Math.atan2(10, 10);

运算符优先级


在这里插入图片描述

关键字

instanceof

判断对象是否属于右边类型直系父类也为true,兄弟类为false

语法格式: 变量 instanceof 类名/接口名

Object map = new HashMap<>();
boolean b = map instanceof List;
System.out.println(b);

false

输入与输出

输入Scanner

导包

import java.util.Scanner;

创建对象

Scanner sca = new Scanner(System.in);

所创建对象中的参数System.in,代表从键盘输入接受到的信息

读取整型数字

int in =sca.nextInt();

读取一串数字,按回车键结束输入

读取字符串

String str = sca.next();

读取字符串,按回车结束输入,中间如果有空格,空格后面输入的都会无效。如果需要保留空格输入,可以使用nextLine()

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 23:14:42  更:2021-07-28 23:14:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:06:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码