JavaSE-day01-Array

1.Java语言发展史

什么是Java语言

​ Java语言是美国Sun公司(Stanford University Network),在1995年推出的高级编程语言.所谓编程语言,是计算机的语言,人们可以使用编程语言对计算机下达命令,让计算机完成人们需要的功能.

计算机基础知识

二进制

1.十进制转为二进制数据: 使用除以2的方式获取余数,从下往上依次取值(如: 6`(10)` = 6 / 2 /2 = 110`(2)`)
2.二进制转为十进制数据:  

字节

字节是计算机中最小的存储单元.计算机存储任何的数据都是亿字节的形式存储
8 bit = 1 Byte
1024 B = 1 KB
1024 KB = 1 MB
1024 MB = 1 GB
1024 GB = 1 TB

2.Java语言跨平台原理

Java虚拟机–JVM(不同的操作平台有不同的JVM)

	JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
	引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

JRE

	Java运行环境(Java Runtime Environment,简称JRE)是一个软件,由太阳微系统所研发,JRE可以让计算机系统运行Java应用程序(Java Application)。
	JRE的内部有一个Java虚拟机(Java Virtual Machine,JVM)以及一些标准的类别函数库(Class Library)。

JDK

	JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

JDK组成

JDK包含的基本组件包括:
javac – 编译器,将源程序转成字节码
jar – 打包工具,将相关的类文件打包成一个文件
javadoc – 文档生成器,从源码注释中提取文档
jdb – debugger,查错工具
java – 运行编译后的java程序(.class后缀的)
appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
Jconsole: Java进行系统调试和监控的工具
![jdk](C:\Users\lock\Pictures\jdk.png)

3.JDK的下载和安装

1.进入https://www.oracle.com/		
Oracle官网,进入后在最下面有一个叫JAVASE Downloads(点击进去进入选择版本),Oracle JDK下方点击JDK Download,找到对应系统的JDK点击下载

2.进入https://www.oracle.com/cn/index.html中文版页面进行下载

3.安装 : 傻瓜式安装(ps : 注意选择安装位置,最好不要装在C盘)

4.常用的DOS命令

windows + R : 打开运行窗口,键入cmd回车,进入DOS的操作窗口
Table : 自动补全
切换盘符		盘符名称:
进入文件夹		cd 文件夹名称
回到上级		cd ..
从根目录进入目标文件夹		cd \ 文件夹名称 \ .... \ 目标文件夹名称
进入根目录		cd \
显示当前文件夹或盘符内的文件		dir
创建文件夹		mk 创建文件夹名称
清楚屏幕		cls
退出DOS命令窗口		exit

5.Path环境变量的配置

windows + E : 打开此电脑
右键单击此电脑选择属性
点击高级系统设置
系统属性中 --> 高级 --> 启动和故障恢复 --> 点击环境变量
在下放的系统变量 --> 新建
变量名 : JAVA_HOME
变量值 : JDK安装的目录(如 : E:\develop\Java\jdk-12.0.2_windows-x64_bin)
点击确定
在系统变量(变量那一列)中找到PATH,点击编辑 --> 新建 --> %JAVA_HOME%\bin
点击确定

测试 : 
打开DOS窗口
输入java或者javac出现提示 : 
	用法 : ......
安装成功

输入 : java -version查看jdk版本

6.HelloWorld案例

注意 :

class前面加上public : 类名必须和文件名一致,不然会出错(找不到类)class前面不加public : 可以文件名和类名不一致(不推荐使用)
public class HelloWorld
public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("HelloWorld!");
	}
}

编译-执行

打开命令提示符
cd 进入文件所在文件夹
javac 文件名.后缀(编译,编译成功会生成.class文件,也称为字节码文件)
java 文件名(后面什么都不加,直接回车运行)

易错 :

1.文件名和类名不一致
2.大小写错误
3.大括号缺少
4.缺少分号(分号表示一句话结尾)

7.注释

1.单行注释 : //
2.多行注释 : /*.......*/
3.文档注释 : /**.......*/

8.关键字的概念和特征

概念 : 被赋予了特殊含义的,被保密的,不能随意使用的字符
特征 : 
1.完全小写的字母(ps: public)
2.在高级记事本中高亮

9.标识符

是指在程序中,自己定义的内容(ps: 如类的名字,方法名)
命名规则 : 
	1.由数字,字母,下划线,$组成
	2.不能以数字开头
	3.标识符不能是关键字
	4.区分大小写
命名规范 : 
	1.类名规范: 首字母大写,后面每个单词首字母大写(大驼峰式命名法)
	2.变量名和方法名规范: 首字母小写,后面每个单词首字母大写(小驼峰式命名法)

10.常量

概述

常量是指在java程序上运行期间不变的数据.

分类

类型含义示例
整数常量所有的整数0, 1, 345, 9
小数常量所有的小数0.0, 1.45, -1.2
字符常量单引号引起来,单个字符,必须有内容‘a’ ‘_’ ‘子’
字符串常量双引号引起来,多个字符“你好世界+123HelloWorld”
布尔常量只有两个值(true\false)true false
空常量只有一个值(null)null

11.基本数据类型

数据类型分类

1.基本数据类型: 包括整数,小数(浮点数),字符,布尔
2.引用数据类型: 包括类,数组,接口

基本数据类型

四类八种数据基本类型: 
整数: byte, short, int(默认), long
小数: float, double(默认)
字符: char
布尔: boolean

12.变量的概念与定义格式

概念

变量: 在程序运行过程中发生改变的数据,称为变量

定义格式

数据类型 变量名 = 数据;
java中要求一个变量每次只能保存一个数据,必须要有明确保存的数据类型

注意事项

1.如果创建多个变量,那么变量之间的名称不能相同
2.对于float和long类型来说,赋值时将后面的F或L不能丢掉
3.注意定义时的数据类型,右侧赋值时不能超过左边的数据类型的范围
4.没有赋值的变量不能直接使用,必须先赋值在使用
5.变量不能超出作用与的范围

作用域: 从定义变量开始,变量所属的大括号里面就是它的作用范围,超出范围就会报错

13.数据类型转换

隐式转换(自动转换)

将数据范围小的数据转化为数据范围大的数据类型(自动转换)

强制转换

将数据范围大的数据转化为数据类型范围小的类型(可能会出现数据丢失,不推荐使用)
数据类型 变量名 = (目标数据类型)变量

字符转换

1.字符转换对照编码表中对应的数字进行赋值(编码表: ASCII\UniCode)
2.UniCode: 通常用两个字节表示一个字符,将原有的英文编码单字节变成双字节,只需要把高字节全部填为0就可以
3.ASCII: 占用一个字节,一个字节能表示最大的整数就是255(2^8-1=255),而ASCII编码 占用0~127用来表示大小写英文,数字和一些符号
4.int a = (int)'a';	//a = 97

14.算术运算符

算术运算符: + - * / %

1. + :
	①对于数值来说,就是加法
	②对于字符char类型来说,在计算之前,char会提升为int类型,然后再计算.char字符和int类型的对照关系表: ASCII\UniCode
	③对于字符串来说,加号等于连接符,进行字符串的拼接操作
2. - *: 和平常使用的减法,乘法相同
3. /: 取商
4. %: 取余数

自增自减运算符(++ --)

1. 一种是单独使用
	int a = 10;
	a++;

	这种情况下,++a,和a++没有什么区别
2. 混合使用
	int a = 1;
	System.out.println(++a);	//2
	System.out.println(a++);	//打印2 执行完后a=3
	System.out.println(a);	//3

	这种情况下++a: a先加1在进行打印操作
        	a++: a先进行打印操作在进行+1
     
    ++在前先进性自加在参加操作
    ++在后先操作后自加

15.赋值运算符

基本赋值运算符

int a = 20;
将等号左边的数据赋值给右边的变量a

复合赋值运算符

+=a += 3a = a + 3;
-=a -= 3a = a - 3;
*=a *= 3a = a * 3;
/=a /= 3a = a / 3;
%=a %= 3a = a % 3;

16.比较运算符

比较运算符包括:
==比较符号两边数据是否相等,相等结果是true,不相等的结果是false
<比较符号左边数据是否小于右边数据,相等结果是true,不相等的结果是false
>比较符号右边数据是否大于左边数据,相等结果是true,不相等的结果是false
<=比较符号左边数据是否小于等于右边数据,相等结果是true,不相等的结果是false
>=比较符号左边数据是否大于等于右边数据,相等结果是true,不相等的结果是false
!=不等于符号,如果符号两边的数据不想等,结果为true
比较运算符: 是两个数据之间进行比较的计算,运算结果为boolean值

17.逻辑运算符

运算符示例特点
&(并且)2 > 1 & 0 < -1两边表达式必须都为true
|(或者)1 = 0 | 5 > 3只要有一边的表达式为true
!(取反)!1 > -1结果上取反(结果为true则取反为false)
1.逻辑&和短路&&的差别: 
	&: 左右两边都执行,左边为false也执行右边
	&&: 左边为false时,不执行右边表达式(提高效率)
2.逻辑|和短路||的差别: 
	|: 左边右边都执行,有表达式条件成立为true
	||: 左边为true时,不执行右边,直接进行下一步操作(提高效率,节省性能)

18.三元运算符

数据类型 变量名 = 关系表达式 ? 数据1 : 数据2;
int max = 10 > 20 ? 10 : 20;
如果关系表达式的值成立,将数据1的值返回,不成立则返回数据2

19.方法入门

概述

1.方法就将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能(提高了代码的复用性,解决代码冗余)
2.方法其实就是一个若干语句的功能集合

方法定义格式

1.方法好比就是一个工厂
	参数(原料),就是进入方法的数据
	返回值(产出物),就是从方法中出来的结果数据(目标数据)

修饰符 返回值类型 方法名 (参数类型 参数名称,....) {
	代码....;
	返回值;
}

定义格式解释:
	1. 修饰符: public static等
	2. 返回值类型: 基本数据类型,void,引用数据类型
	3. 方法名: 自己起的名字,满足标识符命名规则(建议: 见名知意)
	
方法的调用
	static方法可以直接方法名调用(需要在一个类里面)
	不是静态方法,需要new一个对象,通过变量名(对象名称)调用

20.JDK9的JShell简单使用

jshell简介

	jshell 是 Java 9 新增的开发工具,可以用于执行 Java 代码并立即获得执行结果。支持定义变量、方法、类等,支持输入语句、表达式,支持导入外部 Java 源文件。按照官方的定义,jshell 里用到的小块 Java 代码被称为“片段”。

jshell简单使用

1. 打开DOS窗口
2. 键入jshell回车
3. 写代码(ps: 输出打印,回车时直接就输出了)

21.流程控制

概述

程序在执行的过程中,语句的执行顺序对程序是有直接影响的,所以我们必须清楚每条语句的执行流程

顺序结构

顺序执行就是根据程序编写的顺序,从上到下一次执行

分支结构

判断语句If

if语句第一种格式: 
    if(表达式) {
        执行体;
    }

if语句的第二种格式: 
	if(表达式) {
        执行体;
    }else {
        执行体;
    }

if语句的第三种格式: 
	if(表达式1) {
        执行体1;
    }else if(表达式2) {
        执行体2;
    }.....
	}else {
        执行体n + 1;
    }

选择结构Switch

switch(表达式) {
	case 常量值1:
		执行语句1;
		break;
	case 常量值2: 
		执行语句2: 
		break;
	......
	default: 
		执行语句n + 1;
		break;
}

执行流程: 
	1. 首先计算表达式值
	2. 拿计算的值一次和case的常量值匹配,有对应的值就执行case里面的语句体,没有就继续匹配,匹配不到,会执行default里面的语句体
	3. 如果有case语句体下面没有写break(跳出循环)关键字,可能会发生穿透
        
public class Test01 {
    public static void main(String[] args) {
        int a = 10;
        
        System.out.println("判断是春夏秋冬那个季节");
        
        switch(a) {
            case 1: 
            case 2: 
            case 12: 
                System.out.println("冬季");
                break;
            case 3: 
            case 4: 
            case 5: 
                System.out.println("春季");
                break;
            case 6: 
            case 7: 
            case 8: 
                System.out.println("夏季");
                break;
            case 9: 
            case 10: 
            case 11: 
                System.out.println("秋季");
                break;
        }
    }
}

循环结构

概述

	循环语句在满足条件时,反复执行一段代码,这段被反复执行的语句体被称为循环体语句,当反复执行这个循环语句体时,需要在合适的时候把判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环

For循环格式

for(初始化表达式; 布尔表达式; 步进表达式){
	循环体;
}

While循环格式

while(布尔表达式) {
    循环体;
}

标识符:while(布尔表达式) {
    循环体;
	break 标识符;	//直接跳出循环
}

Do…While循环格式

do{
    循环体;
}while(布尔表达式);
ps: do...while 最少执行一次

三种循环的区别

1.如果条件判断从来没有满足过,那么for循环和while循环将不会执行,但是do...while循环会执行最少一次(和do...while循环的模式有关,先执行循环体,后判断,所以最少会执行最少一次)
2.for循环的变量在小括号当中定义,只有循环内部才可以使用.while循环和do...while循环初始化语句本来就定义在外面,所以循环之后还可以继续使用

循环使用选择(建议)

1.可以确定循环次数的使用for循环
2.不能明确循环次数的使用while循环

循环控制语句(break;cuntinue;)

1.break可以直接跳出当前循环,一旦执行,整个循环语句立刻结束,终止循环
2.break可以用在switch语句中,一旦执行,整个switch语句立刻结束
3.continue语句,在循环中出现,跳过本次循环,直接开始下一次循环

死循环

永远停不下的循环,叫做死循环
死循环的标准格式: 
while(true) {
    循环体;
}
for循环中没有步进表达式,初始化和条件判断语句就没有什么意义了
for(;;) {
    循环体;
}

循环嵌套

for(初始化变量; 条件表达式; 步进表达式) {
    for(初始化变量; 条件表达式; 步进表达式) {
    	循环体;
	}
}

22.项目结构

1.最外层的是项目(Project),项目就是最大的包(ps:淘宝,京东等就是一个项目)
2.项目里面的次级目录就是Module,一个项目中可以有多个Module(ps:淘宝的每日精选,淘金币签到等)
3.在Module中有一个叫src的文件夹,我们所有的代码都写在里面,可以使用包名,将各种功能的类区分开来(包名,就是文件夹,一般使用公司的域名倒写,ps:cn.itcast,不要带www,中间的.是目录层级,cn.itcast指的就是在cn的文件夹中有一个叫itcast的文件夹,这个文件夹中就可以放置自己写的.java文件了)

4.在程序run之后,生成的.class文件在项目所在的目录会生成一个out文件夹,里面会把Module的目录都给复制进去,但是在src文件夹中放置的.java文件会变成.class(.class文件和.java文件分开,可以更好的开发)

23.方法

方法的三种调用格式

1.单独调用: 方法名称(参数);
2.打印调用: System.out.println(方法名称(参数));
3.赋值调用: 数据类型 变量名称 = 方法名称(参数);

4.注意: 使用void修饰的方法只能单独调用,不能打印调用和赋值调用

有参数和无参数

1.有参数: 小括号中有内容,当一个方法需要一些数据条件才能完成任务的时候,就是有参数
2.无参数: 小括号中留空,一个方法不需要任何数据条件,自己就能独立完成任务,就是无参数

方法的注意事项

1.方法只能定义在类中,不能嵌套使用
2.方法定义的前后顺序无所谓
3.方法定义之后不会执行,必须调用该方法(单独调用、打印调用、赋值调用)
4.如果方法有返回值,那么必须写上"return 返回值;",不能没有
5.return后面的返回值必须和方法的返回值类型,对应起来
6.对于一个void没有返回值方法,不能写return后面的返回值,只能写return自己(最后一句return也可以不写)
7.一个方法之中可以有多个return,但是必须保证只有一个return被执行到,两个return不能连写

方法的重写(重载)

正确写法: 
1.方法名相同,参数列表不同
2.参数个数不同
3.参数类型不同
4.参数的多类型顺序不同

错误写法: 
5.与参数的名称无关
6.与方法的返回值无关

24.数组

概念

1.数组是一种存放相同类型,多个数据的一种容器

数组的特点

1.数组是一种引用数据类型
2.数组当中的多个数据类型必须统一
3.数组的长度在程序运行期间不能被改变

数组初始化

两种常见的初始化方式:
	1.动态初始化(指定数组长度)
	2.静态初始化(指定数组元素内容)

动态初始化

数据类型[] 数组名 = new 数据类型[数组长度];

1.左侧数据类型,指定数组当中存放的元素都是那种类型
2.左侧中括号,代表数组
3.左侧数组名,给数组取的名字(小驼峰命名法)
    
4.右侧的new,代表创建数组,在内存里面开辟空间
5.右侧的数据类型,必须和左侧的数据类型一致
6.右侧中括号里面的数组长度,也就是数组可以存放多少个数据,是一个int数字

静态初始化

两种创建方式: 
1.完整创建格式: 
数据类型[] 数组名 = new 数据类型[]{元素1,元素2};
2.简化写法: 
数据类型[] 数组名 = {元素1,元素2};

注意: 
1.元素: 数组当中存放的数据
2.静态初始化创建时根据数组元素个数指定数组长度大小

注意

1.注意: 数组名中存放的是16进制的内存地址值
[@95412c2f : 
	[	表示它是一个数组
	@	分隔符
	95412c2f	16进制的内存地址值
2.获取数组元素使用索引获取: 
	索引: 从0开始,代表第一个元素,第二个元素就是索引+1
	创建数组时,会给数组分配空间,和索引
	获取数组元素: 数组名[索引值];

数组索引越界异常

使用数组中不存在的索引值获取元素时会出现数组索引越界异常
获取数组长度: 数组名.length(会返回一个int数组,代表数组长度)
	数组索引 = 数组长度-1

数组空指针异常

数组没有进行new创建,使用时就会出现空指针异常

原因:
1.没有创建数组(new)
解决方案:
1.创建数组new
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值