(java学习笔记)JavaSE基础

Java技术体系平台

JavaSE :标准版 面向桌面型应用(Windows下的应用程序)的Java平台。提供完整的Java核心API,也叫J2SE.
JavaEE:企业版 开发企业环境下的应用程序。该技术体系中包含的技术 Servlet Jsp。主要针对Web应用程序开发。也叫J2EE.
JavaME:小型版 支持Java程序运行在移动终端(手机、PDA:掌上电脑 条码扫描器、RFID读写器、POS机等
智能手机、平板电脑、手持的游戏机等)的平台,对Java API有所精简,并加入了针对移动终端的支持。也叫J2ME. Java Card
支持一些Java 小程序(Applets)运行在小内存设备(智能卡)上的平台。

一、Java语言特点

1、面向对象

两个基本概念:类和对象。
三大特性:封装,继承,多态。

2、健壮性 完善性

在吸收了c/c++ 语言的优点。去除了影响健壮性的因素(指针、内存的申请和释放)。

3、跨平台 JVM

通过Java语言编写的应用程序在不同的系统平台上都可以运行。
Java应用程序 Java虚拟机 JVM 操作系统。

1、Java 两种核心机制

1.JVM (java虚拟机)
2.GC 垃圾回收机制
java 对不在使用的内存空间回收。垃圾回收在Java程序运行过程中开了个系统级线程自动检测进行(优点:自动 不会出现忘记回收,缺点:回收不及时)。
c/c++ 的垃圾回收 由程序员手动编写代码回收。(优点:能够在内存不使用时快速回收,准确高效。缺点:容易失误,出现bug)
宁可回收不及时 一定要回收。

2、JDK配置 设置环境变量

path :Windows系统执行命令时要搜寻的路径
1.打开我的电脑–属性–高级–环境变量
2.新建系统变量JAVA_HOME 和CLASSPATH
变量名:JAVA_HOME
变量值:D:\JAVAJDK\Java\jdk1.8.0_231(本人的安装目录)
变量名:CLASSPATH
变量值:.
;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

3.选择“系统变量”中变量名为“Path”的环境变量,双击该变量,把JDK安装路径中bin目录的绝对路径,添加到Path变量的值中,并使用半角的分号和已有的路径进行分隔。
变量名:Path
变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

3、JDK

Java开发工具包 1.包含了Java的开发工具,2.包括JRE。
其中的开发工具:编译工具(javac.exe) 打包工具(jar.exe)等。
安装了JDK 也就不用单独安装JRE。

4、JRE

Java运行环境 包括Java虚拟机(JVM )和Java程序所需的核心类库(API)等。
如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
简单而言,使用JDK的开发工具完成的java程序,交给JRE去运行。
.java文件(源文件) ----javac.exe---- 编译----.class文件( 字节码文件)----java.exe----执行----JVM

5、java基本规范

1.将 Java 代码编写到扩展名为 .java 的文件中。
通过 javac 命令对该 java 文件进行编译(通过DOS)。
通过 java 命令对生成的 class 文件进行运行
2.在一个java源文件可以声明多个class,但是只能最多有一个类声明为public ,而且要求声明为public的类的类名必须与源文件名一致
Java源文件以“java”为扩展名。源文件的基本组成部分是类(class)。
3.Java应用程序的执行入口是main()方法。它有固定的书写格式:public static void main(String[] args) {…}
//arg:arguments 参数
4.输出语句
System.out.println(); 先输出数据,后换行
System.out.print(); 只输出数据
5.Java语言严格区分大小写。
Java方法由一条条语句构成,每个语句以“;”结束。
括号都是成对出现的,缺一不可。

6、Java中的注释类型:

Ø单行注释 //注释文字
Ø多行注释 /注释文字 / 不可以嵌套使用
对于单行和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行。
Ø文档注释(java特有)
注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档。
javadoc -d 自己起一个名字 -author -version -param HelloWorld
/

@author 指定java程序的作者
@version 指定源文件的版本
@param 方法的参数说明信息
*/

7、Java API :Java提供的基本编程接口 (类库)

​ Java语言提供了大量的基础类,因此Oracle 也为这些基础类提供了相应的API文档,
​ 用于告诉开发者如何使用这些类,以及这些类里包含的方法。

二、JAVA基本语法

1、java关键字中所有字母 均为小写。

2、Java保留字:

现有Java版本尚未使用,但以后版本可能会作为关键字使用。
自己命名标记符时要避免使用这些保留字
byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var 、 goto 、const

3、java标识符:

ØJava 对各种变量、方法和类等要素命名时使用的字符序列称为标识符
Ø凡是自己可以起名字的地方都叫标识符。

3.1、定义合法标识符规则:

Ø由26个英文字母大小写,0-9 ,_或 $ 组成
Ø数字不可以开头。
Ø不可以使用关键字和保留字,但能包含关键字和保留字。
ØJava中严格区分大小写,长度无限制。
Ø标识符不能包含空格。
注意:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。

3.2、Java中的名称命名规范:

Ø包名:多单词组成时所有字母都小写:xxxyyyzzz
Ø类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
Ø变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
Ø常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

4、数据类型

4.1、整型

java的整型常量默认为 int 型,声明long型常量须后加‘l’或‘L’

4.2、浮点型

Java 的浮点型常量默认为double型,声明float型常量,须后加‘f’或‘F’。
浮点型常量有两种表示形式:
十进制数形式:如:5.12 512.0f .512 (必须有小数点)
科学计数法形式:如:5.12e2 512E2 100E-2

4.3、字符型(char)

字符型常量的三种表现形式:
字符常量是用单引号‘ ’括起来的单个字符,涵盖世界上所有书面语的字符。例如:char c1 = ‘a’; char c2 = ‘中’; char c3 = ‘9’;
Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。例如:char c3 = ‘\n’; // '\n’表示换行符
直接使用 Unicode 值来表示字符型常量:‘\uXXXX’。其中,XXXX代表一个十六进制整数。如:\u000a 表示 \n。
char类型是可以进行运算的。因为它都对应有Unicode码。

4.4、布尔类型(boolean)

boolean 类型适于逻辑运算,一般用于程序流程控制:
if条件控制语句;
while循环控制语句;
do-while循环控制语句;

for循环控制语句;
boolean类型数据只允许取值true和false,无null。
不可以0或非 0 的整数替代false和true,这点和C语言不同。

4.5、引用数据类型

字符串: String类(不是基本数据类型,属于引用数据类型)
值null可以赋值给任何引用类型(类、接口、数组)的变量,用以表示这个引用类型变量中保存的地址为空。

String类是一个典型的不可变类,String对象创建出来就不可能被改变。
创建出的字符串将存放在数据区,保证每个字符串常量只有一个,不会产生多个副本。中数据类型变量做运算
String可以和8种数据类型做运算,其运算只能是连接运算:+,运算结果还是String型

5、基本数据类型转换

5.1、自动类型提升

容量小的类型变量自动转换为容量大数据变量。按容量大小(表示数的范围,不是字节数的多少)排序为:

TyporaNotes\图片\自动类型提升.png)]

有多种类型的数据混合运算时,系统首先自动将所转换成容量最大那种数据类型,然后再进行计算。
byte,short,char 之间不会相互转换,他们三者在计算时首先为 int 类型 。
boolean 类型不能与其它数据运算。
当把任何基本数据类型的值和字符串 (String) 进行连接运算时 (+) ,基本数据类型的值将自动转化为字符串 (String) 类型 。

5.2、强制类型转换

自动类型转换的逆过程 ,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符 :() ,但可能造成精度降低或溢出 ,格外要注意 。
通常 ,字符串不能直接转换为基本类型 ,但通过基本类型对应的包装类则可以实现把字符串转换成基本类型 。
Ø如: String a = “97”; int i = Integer.parseInt (a);
Øboolean 类型不可以转换为其它的数据类型。

6、变量

按声明位置分类
在方法体外,类内声明的变量称为 成员变量 。
在方法体内部声明的变量称为 局部变量 。

两者在初始化值方面的异同:
异:局部变量除形参外,需显示初始化
同:都有生命周期

7、运算符

  • 算术运算符
    在这里插入图片描述

取模运算的结果正负号与被模数有关
自增运算不会改变本来的数据类型

  • 赋值运算符

符号: =
Ø当“=”两侧数据类型不一致时, 可以使用自动类型转换或使用强制类型转换原则进行处理 。
Ø支持连续赋值 。
扩展赋值运算符: +=, -=, *=, /=, %=

  • 比较运算符
    在这里插入图片描述

比较运算符的结果都是 boolea型,也就是要么true,要么是 false 。

  • 逻辑运算符

&—逻辑与 | —逻辑或 !—逻辑非
&& —短路与 || —短路或 ^ —逻辑异或

逻辑运算符用于连接布尔型表达式,在 Java中不可以写成 3<x<6,应该写 成x>3 & x<6。
& 与 && 的结果相同

  • &和&&的区别

单&时,左边无论真假,右边都参与运算
双&时,左边为真,右边参与运算。左边为假,右边不参与运算

|和||的区别 与上同理

位运算符

在这里插入图片描述
位运算符直接对整数(整型)的二进制进行运算
<< : 在一定范围( int 32位)内,每向左移一位,相当于 * 2

: 右移 (如果最高位为1 复数 拿1补,如果最高位为0 正数 拿0补)

三元运算符
格式: (条件表达式)?表达式一:表达式二; //必须返回一个结果(表达式)
条件表达式的结果为Boolean型
凡是可以使用三元运算符的地方都可以改写为if else 语句,反之不成立

运算符优先级
在这里插入图片描述

8、程序流程控制

8.1、顺序结构

8.2、分支结构

8.21、if else 结构(条件判断结构)

在这里插入图片描述

在这里插入图片描述
条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量。
语句块只有一条执行语句时,一对{}可以省略,但建议保留。
if-else语句结构,根据需要可以嵌套使用。
当if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略。
当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓。
当多个条件是“包含”关系时,“小上大下/子上父下”。

8.22、switch case 结构

在这里插入图片描述
switch(表达式)中表达式的值必须是下述几种类型之一:byte,short,char,int,枚举(jdk 5.0),String (jdk 7.0);
case子句中的值必须是常量,不能是变量名或不确定的表达式值;

同一个switch语句,所有case子句中的常量值互不相同;
break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾
default子句是可任选的。同时,位置也是灵活的。当没有匹配的case时,执行default

8.23、switch和if语句的对比

​ 如果判断的具体数值不多,而且符合byte、short 、char、int、String、枚举等几种类型。虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。
​ 其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。也就是说,凡是能使用switch-case的,都可以改写为if-else。反之不成立。

8.3、循环结构

在这里插入图片描述

8.31、for 循环

②循环条件部分为boolean类型表达式,当值为false时,退出循环
①初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔
④可以有多个变量更新,用逗号分隔。

在这里插入图片描述

8.32、while 循环

语法格式:
①初始化部分;
while(②循环条件部分){
③循环体部分;
④迭代部分;
}
注意不要忘记声明④迭代部分。否则,循环将不能结束,变成死循环。
for循环和while循环可以相互转化。

8.33、do-while 循环

语法格式
①初始化部分;
do{
③循环体部分;
④迭代部分;
}while(②循环条件部分);
注:do-while循环至少执行一次循环体。

最简单“无限” 循环格式:while(true) , for(;😉,用break 结束循环。

8.4、特殊流程控制语句

8.41、break

结束当前循环 用于switch-case分支结构和循环结构中
用于终止某个语句块的执行

8.42、continue

结束当次循环 只用于循环结构中
用于跳过其所在循环语句块的一次执行,继续下一次循环

两者相同点
①两者关键字的后面不能直接加执行语句的。
②出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块

8.43、return

结束当前方法 (循环也在方法中)
与break和continue不同的是,return直接结束整个方法,不管这个return处于多少层循环之内。

三 、数组 Array

数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。
创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是这块连续空间的首地址。
数组的长度一旦确定,就不能修改。
数组元素是有序的。

分类:基本数据类型元素的数组
引用数据类型元素的数组(对象数组)

1、一维数组

1.1、 声明和初始化

在这里插入图片描述

1.2、数组元素的引用

①定义并用运算符new为之分配空间后,才可以引用数组中的每个元素。
②数组元素的引用方式:数组名[数组元素下标]
③数组元素下标可以是整型常量或整型表达式。如a[3] , b[i] , c[6*i];
数组元素下标从0开始;
④长度为n的数组合法下标取值范围: 0 —>n-1;如int a[]=new int[3]; 可引用的数组元素为a[0]、a[1]、a[2]

1.3、数组元素的默认初始化值

数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化。
对于基本数据类型而言,默认初始化值各有不同
对于引用数据类型而言,默认初始化值为null(注意与0不同!)
在这里插入图片描述

2、二维数组

2.1、声明和初始化

在这里插入图片描述
在这里插入图片描述

3、其他

3.1、数组中涉及的常见算法

数组元素的赋值(杨辉三角、回形数等)

求数值型数组中元素的最大值、最小值、平均数、总和等

数组的复制、反转、查找(线性查找、二分法查找)

数组元素的排序算法

衡量排序算法的优劣:
1.时间复杂度:分析关键字的比较次数和记录的移动次数
2.空间复杂度:分析排序算法中需要多少辅助内存
3.稳定性:若两个记录A和B的关键字值相等,但排序后A、B的先后次序保持不变,则称这种排序算法是稳定的。

3.2、排序算法分类:内部排序和外部排序。

​ 内部排序:整个排序过程不需要借助于外部存储器(如磁盘等),所有排序操作都在内存中完成。
​ 外部排序:参与排序的数据非常多,数据量非常大,计算机无法把整个排序过程放在内存中完成,必须借助于外部存储器(如磁盘)。外部排序最常见的是多路归并排序。可以认为外部排序是由多次内部排序组成。

3.3、Arrays工具类的使用

​ java.util.Arrays类即为操作数组的工具类

在这里插入图片描述

3.4、数组使用中的常见异常

在这里插入图片描述

注:本文章是根据哔哩哔哩公开课 Java -Java 学习- Java 基础到高级-宋红康-零基础自学Java-尚硅谷 整理所得
大爱康师傅!!

  • 9
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值