一,Java基本数据类型

1.1,逻辑类型
在Java中逻辑类型为(也称作布尔类型)boolean
常量:true false
变量:要用boolean关键字声明的逻辑变量,若不赋值则默认为false,
例如:boolean i = true
1.2,整数类型
还有一种是整数类型 分为byte,short,int,long
1.byte类型,分配1字节内存,占8位;
变量:用byte关键词声明的变量,例如:byte i = 10;
2.short类型,分配2字节内存,占16位;
常量:10,52,20
变量:用int关键词声明的变量,例如int i =10;
(在Java中byte类型和short类型中没有常量表示fa,但是在不超过byte和short的范围可以用int类型常量赋值给byte和short)
4.long类型,分配8个字节,占64位;
常量:long类型的常量后缀要有L,类如54L
变量:用关键字long声明的变量,例如long i = 87L
1.3,浮点类型
浮点类型有两种一种是float,另一种是double
1.float类型,分配4字节,占32位,有八位有效数字;
常量:(在float类型中常量的后缀必须要有f或者F)例如:10.4F,0.24f
变量:使用float关键词声明的变量,例如:float i = 10.24f
2.double类型,分配8个字节,占64位,有十六位有效数字;
常量:(在double类型中就不需要和float类型一样必须要有后缀),例如:2.5,80.5
变量:使用double关键词声明的变量,例如double i = 0.52;
1.4,字符类型
char类型,分配2字节,占16位,变量范围为:0~65535
常量:在char类型中,用''英文单引号引起来的数据,用单引号括上的Unicode中的一个字符,例如:'你','52'
变量:使用char关键字声明的变量,例如:char ch = '40'
1.4.1现在比较疑惑什么是Unicode
统一码(Unicode),也叫万国码、单一码,由统一码联盟开发,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。
统一码是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
可以用idea编写一段程序来看一下;
编写一段程序找出‘你’’我‘’他‘在Unicode中的位置
讯享网
结果便是这样的
然后在这里补充一种数据类型DECIMAL 类型,用来解决浮点数不精确的问题
DECIMAL是MySQL中的一种浮点数类型,用来解决浮点数不精确的问题,在MySQL中支持三种浮点型类型,FLOAT,DOUBLE,DECIMAL。其中比较精确的是decimal,其格式为DECIMAL(m,d),m是数字的最大数,其范围为(1~65),d是小数点右边数字的个数,其范围为(0~30)但不能超过m
float占4个字节,double占8个字节,decimal占(m+2)个字节
1.5数据类型转换
在我们生活中也就是有两种转换一种是小范围的对象转换到大范围中,另一种就是大范围的对象转换到小范围中,在Java数据类型转换中也是这样,有两种转换隐式转换和显式转换(强制转换)
1.5.1隐式转换
和我之前说的生活中的转换其实差不多是一种小范围的对象转换到大范围中,也就是把一个数值范围小的类型赋值给一个数值范围大的数值型变量,jvm会在编译过程中自动提升,所以叫做隐式转化(自动类型转换),隐式转换的精度不会下降(整形类型之间的转换精度不会变,而浮点数float到double精度会变高)
数据类型的范围大小就是:byte<short<int<long<float<double
用一段代码来表示一下
讯享网
结果如下

JVM会把b2自动转换成double然后赋给d这就是隐式转换
1.5.1显式转换
这种转换也就是在生活中的另一种转换方式,大范围的对象赋给小范围中,也就是把数值范围大的类型赋值给一个数值范围小的数值型变量的时候,有可能会丢失精度,所以需要我们人为转换,这就是显式转换(强制转换)
那么问题来了强制转换该怎么人为转换
格式如下:目标类型 变量名 = (目标数据类型)被强转的数据;
用一段代码来表示一下

结果为9,double的范围比int的范围大,所以属于强制类型转换
1.6Java包装类
首先咱先说什么是包装类,然后包装类的作用是啥,然后就包装类和基本数据类型的区别有什么
1.6.1什么是包装类,包装类的作用
在Java语言中会有面向对象编程,而面向对象是基本数据类型无法进行引用的,所以包装类出现了,包装类是方法和字段,在面向对象中可以被引用,这也就是他的作用
他的作用再次解释一下就是在Java中基本数据类型,他就是纯粹的数值,没有任何可操作性和可执行性,而包装类就不一样了,每一个数据类型都对应一个可引用的类型
byte--Byte short--Short int--Integer long--Long float--Float double--Double
boolean--Boolean char--Character
还有装箱和拆箱哦,也就是根据数据变成对应的包装对象,然后将包装对象变回基本数据类型
装箱:Integer j = 4;
拆箱:拆箱之前要有装箱
Integer j = 4;
int i = j;
1.6.2包装类和基本数据类型的区别
他们两个的区别大致可以分为引用区别,存储区别,声明方式区别,初始值不同,使用方式不同
1.包装类的调用是引用对象的地址值,而基本数据类型不是
2.包装类是引用的传递,而基本数据类型是值的传递
3.包装类储存的时候是先用new关键字在堆中开辟内存空间,然后储存在堆中,调用的时候通过new关键字来进行调用,而基本数据类型直接储存在栈中直接调用,所以包装类的效率要比基本数据类型慢
4.声明方式,在3中提到了要用new关键字来进行调用也就是在声明时要用new关键字来进行声明,而基本数据类型不需要
5.初始值不同,包装类的初始值时null,而基本数据类型的初始值一般都为0;boolean的初始值为flase
6.使用方式不同,基本数据类型直接赋值就行了,而包装类要在集合中使用
1.6.3包装类的范围
讯享网
java数据库编程基础问题
二,标识符和关键字
1.1什么是标识符
标识符,顾名思义就是用来标注和认识;所以你可以把他理解成为人的名字,用来标识,但是他在命名的时候会有一些要求(和人名一样可以理解hh)
1.2标识符的要求
1.标识符的开头不能是数字
2.在标识符的命名组成中,由数字,英文字母,美元符号还有字符组成
3.标识符不能是关键字(就和人名一样,你起和国家大领导一样的名有点不合适吧hhh)
4。不能是true,false,null
1.3关键字
在Java语言中有许多关键字,在以后的学习过程中会慢慢了解
abstract 、assert 、boolean、break、byte、case、catch、char、class、const、continue、default 、do、double、else、enum、extends、final、finally、float、for、goto、if、implements、import、instanceof、int、interface、long、native、new、package、private、protected、public、return、short 、static、strictfp、super、switch、synchronized、this 、throw、throws、transient 、try 、void、volatile、while
然后就是我们该怎么记住这些关键字呢,这里面有我们熟悉的基本数据类型的关键字,也有在以后面向对象中学到的关键字,让我们来分类记忆
53个关键字可分为51个关键字+2个保留字
1.3.1保留字(两个)
1.const关键字,这个单词的意思时常量,也就清晰明了了,它用于在某个字段或某个局部变量声明,声明什么呢,就是声明这一部分是常量,不可改变或改写。
2.goto关键字,他的英语意思是转到,后面要加符号,作用是改变代码的执行片段,在符号位置执行
1.3.2基本数据类型(八个)
1.逻辑类型 :boolean
2.整数类型:byte(1字节) short (2字节) int(4字节) long(8字节)
3.浮点数类型:float (14字节)double(8字节)
4.字符类型:char(2字节)
作用前面都介绍过了
1.3.3访问控制修饰符(三个)
我之前学过所以我就按照我之前的来记一下
公有类型public 用于修饰类与类的成员
私有类型private 用于修饰类的成员
保护类型protect 用于修饰类的成员
然后他们的作用来让我记录一下
这三个关键字还是挺重要的,在面向对象那里
在不同的时候是否可见
private
protect
public
同一类
可以
可以
可以
在同一包的子类
不可以
可以
可以
在同一包的非子类
不可以
可以
可以
在不同包的子类
不可以
可以
可以
在不同包的非子类
不可以
不可以
可以
1.3.4包相关的(两个)
backage 许多相关的类放在一起
import用来导包
1.3.5类有关的(六个)
class 类的定义
abstract,在后面的抽象类会学到
new 用来开辟内存空间在堆里面
extend,面向对象的三大特性,继承中的知识点
interface 接口
implments 用于接口实现
1.3.6流程控制(十个)
循环:
for
while
do while
分支:

if ....else
swich case default
brack跳过循环执行下一条语句
continue结束本次循环,开始下一次循环
1.3.7 异常相关(5个)
try……catch……{finally……} 将可能发生异常的程序放在try catch之间,发生异常执行catch后语句,
不管有没有捕获异常,都会执行finally后语句
throw 针对对象,抛出异常可以是产生的,也可以是自己抛出的,使用throw可以抛出异常
throws 针对方法,此方法不处理异常,交给方法调用处处理
1.3.8 this和super
this关键字和super关键字在后面面向对象时都会学到;
this有三个作用
1.调用本类中的成员变量
2.调用本类中的构造方法
3.代表自身类的对象
super是用来调用父类被子类覆盖的方法,通常会在继承中出现
1.3.9很简单的5个
null空的
viod空返回值类型
return返回
true真的
flase假的
1.3.10修饰类,方法,变量的关键字(四个)
static静态的,可修饰变量和方法,修饰完之后,变量就做静态变量,方法叫做静态方法
final可修饰类,方法,变量;修饰之后的类不能被继承,修饰之后的方法不能被重写,修饰之后的变量为常量
native 本地的,修饰方法是Java调用非Java代码的接口
synchronized锁修饰方法,避免造成死锁
1.3.11有几个不常用的关键字(5个)
enum 枚举关键字
使用关键字strictfp来声明某个类、接口或者方法时,那么在这个关键字所声明的范围内所有浮点运算都是精 确的,符合IEEE-754规范的。例如一个类被声明为strictfp,那么该类中所有的方法都是strictfp的。
注:可以将一个类、接口以及方法声明为strictfp,但是不允许对接口中的方法以及构造函数声明strictfp关键字
transient
1)一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问。
2)transient关键字只能修饰变量,而不能修饰方法和类。注意,本地变量是不能被transient关键字修饰的。变量如果是用户自定义类变量,则该类需要实现Serializable接口。
3)被transient关键字修饰的变量不再能被序列化,一个静态变量不管是否被transient修饰,均不能被序列化。
volatile
volatile变量是一种比sychronized关键字更轻量级的同步机制
1.3.12特别注意的关键字(面试中常考的一个)
instanceof
他的作用是判断一个对象是否是一个具体类的实例
也就是判断左边的对象是否是右边类的实例
使用方法:对象名 instanceof 类名
是就返回true不是就返回false
三,循环与分支

1.程序顺序执行
这是流程语句中的程序顺序执行顾名思义,也就是按照程序的顺序进行,依次进行编译,下面一段程序有几个比较重要的点
这是最简单的按顺序执行;接下来来几个嵌套来看一下
接下来的分支和循环会大量用到这种代码块,还有对顺序的理解;
2.分支语句
分支语句其实就是条件判断语句,按照结果来进行判断进行接下来哪一条程序语句;
2.1if-else语句
接下来是条件判断语句中的if--else语句
语句的格式为
多说无益,找几个题目来解释一下就一目了然了
题目:请输入小明的成绩,如果他在80以上奖励自行车,如果他在80分以下奖励七匹狼;


这就小明考试的两种结果,是不是很通俗易懂hh
2.2else-if语句
与上面基本一样不过else-if语句就是有多个else-if语句格式如下
看见格式就懂了,其实与上面一样之不过有多个分支;
还是这刚刚那个题目
题目:请输入小明的成绩,如果他在80以上奖励自行车,如果他在80分以下60以上奖励篮球;在60一下奖励七匹狼
这就是这个题目的答案,是不是非常简单。
2.3switch选择语句
这个switch选择语句与上面的语句有所不同,格式也有所不同
还是这个样子看可能看不懂,但是来个题目一目了然;
题目:键盘输入星期数,然后你想干什么,星期一:跑步,星期二:仰泳,星期三:慢走
星期四:动感单车,星期五:拳击,星期六:爬山,星期七:好好吃一顿
以上代码就是这个题目的程序,也很简单但是有几个注意的点。
1.注意上面程序中的day的数据类型,case 后面的数据要与day的数据类型相同
2.每个case结束之后一定要有break;要不然会有一直连续编译的情况;
3.最后结束时要有default,这就能输入其他数据也会有结果了
3.循环语句
循环语句比较好理解就是在没有完成一定的条件是要一直循环下去有while,do--while,for循环语句
3.1while语句
while语句的格式
有几个需要注意的点
1.在while()中的布尔表达式中,只有为true是才会执行,所以什么时候使用while,在不知道要循环多少次时,可以联想到while
2.循环体既可以时简单的语句,也可以时复合语句
3.while的执行过程大概就是这样的先判断是否为true,如果为true,进行循环体的编译,在判断是否为true,继续进行,直到为false结束循环。
还那句话来个题目,一目了然
题目:使用while循环,计算1+2+3+....+100的和,并显示结果
然后结果如下

3.2do--while语句
除了格式以外和while基本相同,格式
直接来个题目看一下;就明白了,和上面那个题目一样
题目:使用do--while循环,计算1+2+3+....+100的和,并显示结果

3.3最后的循环-for循环
for循环的语法结构:
注意的点为:
1.表达式1表示循环变量的初始值;
2.表达式2是循环的条件
3.表达式3的作用改变循环的值(++)(--)
4.循环体可以是多条语句
5.for循环的过程为计算表达式1,然后判断表达式2是否为true,为true则进行循环体进行计算,然后通过表达式3改变变量的值然后依次进行,直到表达式为false;
来一个题目就懂了,还是一样的题目
题目:使用for循环,计算1+2+3+....+100的和,并显示结果

这个题目都比较简单,在我们以后的学习中都会有流程语句的身影,可以勤加练习;
四,方法(也就是函数)与重载
假如在一个类中的main方法中你写了五百行代码,并且有很多代码是重复的,你该怎么办,是不是一点也不美观,代码的复用性也不强,所以方法就出现了,在main方法外面,定义一个方法,然后再main方法中调用,这个样代码既整洁,代码复用性还强。
1,方法格式
这就是方法的格式,多说无益,来个例子就一目了然


这样自己打开idea敲敲代码就明白了
2.各部分的意思

返回值类型:就是你要返回的数据的数据类型,你返回什么,你调用的时候结果就是什么
方法名:你自己给他起的名字,在调用时会用到
形式参数类型:就是在后面形式参数的数据类型,在方法里的程序会用到的
方法体:就是程序语句
return:后面要加返回值
viod:这个返回值类型就不用再写return了
形式参数:就是个变量,在下面程序会用到
3,方法的特点
1.不调用时就不会执行
2.大大提高了代码的复用性
3.方法将功能也就是程序语句进行封装
4.例题
//定义一个方法判断数组中的某一个值是否存在,将结果返回给调用处;

所以当你写几个题目的时候就会懂了
5.重载
就是在Java中你可以定义多个名字相同的方法,但是你的参数或者返回值必须不同,这也挺好理解的,两个人可以同名,但是他的外貌,精神是不一样的才行,对吧hh
打开idea写一段代码领悟一下

方法的重载就比较简单,就是与方法名无关,只与参数与返回值有关
作业:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/10875.html