Java基础(一)

Java基础(一)

基本概念:

位(bit):一个数字0或者一个数字1,代表一位
字节(byte):每逢8位是一个字节,这是数据存储的最小单位。

1 byte = 8 bit
1 KB = 1024 Byte…

Java虚拟机————JVM(Java Virtual Machine)

跨平台性————Java程序跨平台,JVM是各自的,不跨平台

JRE和JDK
JRE:Java程序运行时的环境包含JVM和运行时所需的核心类库。
JDK:Java程序开发工具包,包含JRE和开发人员使用的工具。

运行Java程序只需JRE即可,开发则需JDK。

%SystemBoot%————两个%中间包含的是地址,本例指代C:Windows…
又如%Java_Home%,Java_Home存放放Java的JDK的地址,使用%%包起来达到多次循环使用。

Java源程序->编译器编译->字节码—>JVM运行
.java->编译->.class

注释————单行注释( //注释内容 ),多行注释,也称区块注释( /* 注释内容 */ )。

第一个Java程序

//第一行的最后一个单词必须和所在文件名称完全相同,区分大小写。
//public class后面定义的是一个类名,类是Java当中所有代码的基本组织单位。
public class HelloWorld {
//第二行的内容是万年不变的固定写法,代表main方法
//这一行是程序执行的起点
	public static void main(String[] args){
	//第三行是打印输出语句(其实就是屏幕显示)
	//希望显示什么内容就在小括号中写什么内容
		System.out.println("hello world!");
	}
}

关键字:完全小写的字母,在增强版的记事本当中有特殊颜色
例如:public void

标识符——自己定义的内容,比如类名、方法名和变量名等。

命名规则 (硬性要求)
标识符可以包含26个字母,数字,美元符号和下划线
不能以数字开头
标识符不能是关键字

命名规范 (软性要求)
类名规范:首字母大写,后面每个单词首字母大写。(大驼峰式)HelloWorld
变量名规范:首字母小写,后面每个首字母大写。(小驼峰式)helloWorld
方法名规范:同变量名。

常量

程序运行期间,固定不变的量

字符串常量:凡是双引号引起来风部分
整数常量:直接写上的数字,没有小数点。
浮点数常量:直接写上数字,有小数点。
字符常量:凡是用单引号引起来的单个字符,就叫做字符常量//‘’中间不能没有且只能有一个。
布尔常量:只有true、false
空常量:代表没有任何数据。//不能直接打印

基本数据类型

整数型

  • byte 1字节
  • short 2字节
  • int 4字节
  • long 8字节(1字节=8位)
    浮点型
    float 4字节(3.4E+38,表示3.4乘10的38次方,科学计数法)单精度。
    double(默认)8字节
    字符型 char 2字节
    布尔型 boolean 1字节 true false
    ( 科学技术法省空间,范围和内存占用不一定相关 )

引用数据类型

  • 数组
  • 接口
  • lambda

注意:
字符串是引用类型
浮点型可能只是一个近似值,并非精确值
数据的范围与字节数不一定相关,例如float数据范围更加广泛,但是float是4个字节,long是8字节
浮点数中默认类型是double,如果一定要使用float类型,需要加上一个后缀F
如果是整数默认是int类型,如果一定要使用long类型,需要加上一个后缀L,推荐使用大写字母后缀。

变量

程序运行期间,内容能够改变的量

创建一个变量并且使用的格式

数据类型 变量名称//创建一个变量
变量名称 = 数据值//赋值

数据类型 变量名称 = 数据值//创建一个变量的同时,立即赋值

注意:右侧的值不能超过类型所表示的数据范围

变量的使用的注意事项:
1、如果创建多个变量,那么变量之间的名称不能重复
2、对于float和long类型的变量,字母后缀的F和L不能丢掉
3、如果使用byte或者short类型的变量,那么右侧的数据值不能超过左侧类型的范围
4、没有进行赋值的变量,不能直接使用,一定要复制之后才能使用
5、变量使用不能超过作用域的范围
【作用域】从定义变量的第一行开始,直到所属的大括号结束为止。
6、可以通过一个语句来创建多个变量,一般情况不推荐这么写。

小结:

数据类型->基本数据类型,引用数据类型
基本数据类型:四类八种
引用数据类型

数据类型转换

当数据类型不一样时,会发生数据类型转换

自动类型转换(隐式)

  1. 特点:代码不需要进行特殊处理,自动完成
  2. 规则:数据范围从大到小。(与字节数不一定相关)

强制类型转换(显式)

  1. 特点:代码需要进行特殊的格式处理,不能自动完成。
  2. 格式:范围小的类型 范围小的变量名 = (范围小的类型)原本范围大的数据
    例如:int num = (int)100L;

注意事项:

  1. 强制类型转换一般不建议使用,因为可能发生精度损失、数据溢出。
  2. byte/short/char 这三种类型都可以发生数学运算,例如加法“+”。
  3. byte/short/char 这三种类型在运算时,都会被首先提升成为int类型,然后再计算。
    例如:byte num1 = 30;
    byte num2 = 40;
    int result = num1 + num2;//类型为int,如果之前的类型为其他类型则会报错
  4. boolean不能发生类型转换。

编译器的常量优化:

对于byte/short/char三种数据类型来说,如果右边赋值的数值没有超过范围,
那么javac编译器将会自动隐含的为我们补上一个强制转换(byte)(short)(char),
超过了就会报错。

数字和字符的对照关系表(编码表):

ASCII码表:American Standard Code for Information Interchange,美国信息交换标准码表。
Unicode码表:万国码。也是数字和符号的关系对照表,开头0-127部分和ASCLII完全一样,128之后包含更多字符。
只需记住三个:48————‘0’ 65————‘A’ 97————‘a’

运算符

运算符:进行特定运算的符号。
表达式:用运算符连起来的式子叫做表达式。

基本运算符

四则运算: + - * / (加减乘除)

取模(取余数):%
只有整数的取模才有意义。

被除数/余数:商…余数
除法只看商不看余数,即向下取整。

首先计算得到表达式的结果,然后再打印输出这个结果。

注意事项:一旦运算符当中有不同类型的数据,那么结果将会是数据类型范围大的那种。

四则运算当中加号“+”有三种常见的用法:
1、对于数值来说,那就是加法。
2、对于字符char来说,在计算之前,char会先被提升成为int,然后在计算再计算。
char类型字符和int类型数字之间的对照关系表:ASCII、Unicode
3、对于字符串String(首字母大写,不大写不是关键字)来说,加号代表字符串连接操作。

自增自减运算符:++ ,–

使用方法:
1、单独使用:不和其他操作混合,独立成为一个步骤。
2、混合使用:和其他操作混合,例如与赋值混合或者与打印操作混合等。
使用区别:
1、单独使用没有任何区别
2、混合使用有重大区别,++num,num++
3、常量不能使用自增自减运算符

赋值运算符

基础运算符:=
复合运算符:+= -= *= /= %=
注意事项:
1、只有变量才能使用赋值运算,常量不能进行赋值。
2、复合赋值运算符中隐含了一个人强制类型转换。

比较运算符

== != < <= > >=
注意事项:
1、比较运算符的结果是一个布尔值
2、如进行多次判断,不能连着写(例如:1<y<3是错误写法,正确写法:1<y&&y<3)

逻辑运算符

与-&& 或——|| 非——!
短路效果:
与“&&” 或“||”,如果根据左边已经可以得到最终结果,那么右边的代码将不再执行,从而节省一定性能。
注意事项:
1、逻辑运算符只能用于boolean值。
2、与、或需要左右各有一个boolean值,但是取反只要有一个boolean值即可。

三元运算符

格式:
数据类型 变量名称 = 条件判断 ?表达式A : 表达式B;
注意事项:
1、必须同时保证表达式A和表达式B都符合左侧数据类型的要求。//int result = 3 > 4 ? 2.5 : 10; (错误写法)
2、三元运算符的结果必须被使用。

流程控制

流程控制—————顺序,选择,循环

1、顺序结构

2、选择结构

判断语句——if

(1)if(关系表达式){
语句体;
}
满足条件执行
(2)if(关系表达式){
语句体1;
}else{
语句体2;
}
(3)if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}else if

else if(关系表达式n){
语句体n;
}else{
语句体n+1;
}

选择语句——switch

格式:
switch(表达式){
case 常量值1:
语句体1;
break;
case 常量值2:
语句体2;
break;

default:
语句体n+1;
break;
}

注意事项:

1、多个case后面的数值不能重复。
2、switch后面的小括号只能是以下数据类型:
基本数据类型:byte/short/char/int
引用数据类型:String字符串、enum枚举
3、switch语句格式可以很灵活:前后顺序可以点颠倒,而且break可以省略,
匹配哪个case就从哪个case向下执行,直到遇见break或者整体结束为止。

循环结构

基本组成部分,一般可以分为四个:

  1. 初始化语句:再循环开始最初执行,而且只做唯一一次。
  2. 条件判断:如果成立,则循环继续;如果不成立,则循环退出。
  3. 循环条件:重复要做的事情内容,若干行语句。
  4. 进步语句:每次循环之后都要进行的扫尾工作,每次循环结束都要执行一次。

for循环

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

while(条件判断){
循环体;
}
扩展格式:
初始化语句
while(条件判断){
循环体;
步进语句;
}

do—while循环

标准格式:
do{
循环体;
}while(条件判断);
扩展格式:
初始化语句
do{
循环体;
步进语句;
}while(条件判断);
至少执行一次

三种循环的区别:

1、do—while循环至少执行一次。
2、for循环的变量在小括号中定义,只有循环内部才可以使用,而while和do—while循环初始化语句本来就在
外边,所以出来循环之后还可以继续使用。

break关键字的用法

1、可以用在switch语句当中,一旦执行,整个switch语句立刻结束
2、还可以用在循环语句当中,一旦执行,整个循环语句立刻结束
循环选择的小建议:循环次数确定的场景多用for,否则多用while

另一种循环控制语句continue关键字

一旦执行,立即跳过当前循环次数剩余内容,马上开始下一次循环。

死循环

标准格式:
while(true){
循环体;
}
注意事项:死循环后边写语句会报错。

嵌套循环

for(…){
for(…){

}
}

集成开发环境

Integrated Development Environment,IDE(集成开发环境)

项目project(模块module(包package(…),包package(…)))

新建项目

打开IDE,新建project选择empty project,新建model

src 源码包
external libraries 外部库(JDK)

快捷输入

psvm——自动生成main方法
public static void main(String[] args) {
}

sout——自动生成输出语句
System.out.println();

5.fori——快速生成循环语句
for (int i = 0; i < 5; i++) {
}

alt+enter 导入包,自动修复

方法

方法的定义:方法其实就是若干个语句的功能集合。
参数
返回值

格式:

修饰符 返回值类型 方法名称(参数类型 参数名称,…){
方法体;
return 返回值;
}

方法名称的命名规则和变量一样,使用小驼峰。
方法体:也就是大括号当中可以包含的任意条语句。

return的作用

  1. 停止当前方法
  2. 将后面的返回值还给调用处

注意:return后面的返回值必须和方法名称之前的返回值类型保持对应。

注意事项:

1、方法定义的先后顺序无所谓。
2、方法的定义不能产生嵌套包含的关系。
3、方法定义好之后不会执行,需要进行方法的调用。

方法的调用

格式:
方法名称();

方法的三种调用方式

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

四个步骤:

找到方法——传递参数——执行方法体——传递返回值

有参数:小括号中有值,一个方法需要一定的数据才能完成任务
无参数:小括号中没有值,方法不需要任何条件就能独立完成任务

有返回值,将返回值还给调用处,无返回值则直接使用
无返回值方法只能使用单独调用

注意事项

1、方法定义不能嵌套
2、方法定义的前后顺序无所谓
3、方法定义不会执行,需要调用
4、如果方法返回值类型不为void,必须写上return
5、return后面必须有返回值数据,且和方法的返回值类型相同
6、void方法后面的return可以省略,要写也只是——return;
7、一个方法可以有多个返回值,但是只有一个可以生效

方法的重载(overload)

多个方法的名称相同,但是参数列表不同。

  1. 参数类型不同
  2. 参数个数不同
  3. 参数的多类型顺序不同

与关键字、参数名称、返回值无关。

数组

数组的概念:是一种容器,可以同时存放多个数据值

数组的特点:

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

两种常见的初始化方式:

1、动态初始化(指定长度),创建数组时直接指定数组长度
2、静态初始化(指定内容),创建数组时,直接指定具体数据

动态初始化数组的格式:

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

静态初始化

基本格式:
数据类型[ ] 数组名称 = new 数据类型[ ]{元素1,元素2,…,元素n};
省略格式:
数据类型[ ] 数组名称 = {元素1,元素2,…,元素n};

两侧数据类型必须保持一致,虽然静态初始化没有告诉数组长度,但是可以通过元素个数推算。

数组的初始化可以拆分为两个步骤:

静态

int[ ] arrayA;
arrayA = new int{1,2,3,4};

动态

int[ ] arrayB;
ayyayB = new int[4];

注意:

  1. 静态初始化的省略格式不能拆成两个步骤。
  2. 直接打印数组名称,得到的是数组对应的内存地址哈希值。

访问数组的格式:数组名称[索引值]

索引值,就是一个int数字,代表数组当中的编号。

索引值从0开始,一直到数组长度为-1为止。

使用动态初始化数组时,其中的元素将会自动拥有一个默认值,
规则如下:

  • 整数类型,0;
  • 浮点型,0.0;
  • 字符型,’\u0000’;
  • 布尔型,false;
  • 引用型,null。

静态初始化数组一样有默认值

一些数组的操作

获取数组长度

数组名称.length
int len = arrayA.length;

数组一旦创建,程序运行期间,长度不可改变。

遍历数组

对数组中的元素逐一,挨个儿处理,默认处理方式就是打印输出。

数组名称.fori

数组作为方法的参数

当调用方法时,向方法的小括号进行传参,传的是数组的地址值。
如果一个方法可以有0、1、多个参数,但是只能返回0或1个返回值,不能有多个返回值。
如果希望一个方法当中产生多个结果数据进行返回,就可以使用一个数组作为返回值类型。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值