搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
花生_TL007
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
iOS GitHub上常用第三方框架与一些参考文本总结_github - letsgo666/callback_8
2
[TensorFlow] Could not load dynamic library ‘cudnn64_8.dll‘; dlerror: cudnn64_8.dll not found_could not load dynamic library 'cudnn64_8.dll'; dl
3
Linux集群系列——iSCSI协议、gfs、cLVM
4
Leaflet 改变 Marker(标记) 颜色_leaflet加载 kml格式数据marker颜色
5
Android GridView 指定行数,动态行宽,占满空间_gridview元素占比屏幕
6
cublasCgetrfBatched cublasCgetriBatched sample
7
鸿蒙 + Python 全栈开发一个排行榜应用_python鸿蒙开发
8
对于协同过滤算法我自己的一些总结和看法
9
python区块链简单模拟【03】
10
python:Anaconda安装mlxtend库_mlxtend库怎么安装
当前位置:
article
> 正文
java第四课_i
作者:花生_TL007 | 2024-03-07 19:42:59
赞
踩
i
1.什么是NPE,什么情况下会发生NPE
NPE全称叫:NullPointerException,中文意思是:空指针异常。
数组
:数组是一连串的内存空间, 拥有多个相同数据类型的内存地址,数组本身也是一种数据类型。
数组由下标/索引(index)和元素(element)组成;数组的作用是利用指针指向在堆区中相对应的地址元素,当指针是null的时候,查询不到开辟的内存空间,因此不允许指针进行操作,系统会出现NPE
例如:定义一个普通类型的数组
定义一个对象数组:
集合元素为null
包装类为null,拆箱报错
对象级联调用
如何防止NPE?
因为NPE出现的关键是指针为null,所以当我们使用指针进行操作的时候,如果不确定指针是否为null,应该对指针做非空判断,判断指针为null时,使用new关键字开辟内存空间,来防止NPE出现
if(指针== null) {指针= new ...}
2.new关键字的作用
简单地说new的作用是在堆区开辟内存空间,并返回该内存空间的内存地址
具体来说:
1. 与栈区分配一个存储空间保存引用(固定的指针)。
2. 与堆区分配一片内存空间保存相应类的对象(引用数据类型的对象,如:数组、对象等)。
可用于在堆区构造数组和对象:构造数组------
new 数据类型[长度]
构造对象-------
new 构造方法()
3. 将堆区对象的首地址赋予栈区引用。
注意:使用 new 关键字时会调用类中的构造方法,对于有父类的类会首先调用其父类的构造方法。
构造数组的结构示意图:
构造对象的例子:
Student stu;
stu = new Student();
在java中变量保存在栈内存中,对象保存在堆内存中。
在上面的例子,执行语句Student stu;
表示声明一个指向Student类对象的引用stu,这个引用stu保存在栈内存中。
执行语句:
stu = new Student();
1)new Student()表示创建一个Student类的对象,并在堆内存中分配空间;
2)stu = new Student();表示让stu这个引用变量指向这个Student类对象。
3.数组和对象的区别
数组和对象都是可以表示成数据的集合;
1)数组表示有序数据的集合,而对象表示无序数据的集合。
2)数组的数据没有”名称”,但是有对应的索引,比如arr[3];对象的数据有”名称”(属性名),而对象因为是无序数据的集合,所以不存在索引,用类名.属性名来表示。
4.基本数据类型对应的引用数据类型
.基本类型的访问是按值访问的,就是说你可以操作保存在变量中的实际的值。有如下特点:
1)基本数据类型的值是不可变的(我们不能给基本数据类型添加属性和方法);
2)基本数据类型的比较是值的比较(只有他们的值相等的时候才是相等的);
3)基本数据类型的变量是存放在栈里面的
引用数据类型有三大类:
引用数据类型可以拥有属性和方法,属性又可以包括基本数据类型和引用数据类型。有如下特点:
1)引用数据类型可以拥有属性和方法,且值是可变的;
2)引用数据类型的值是同时保存在栈内存和堆内存的对象
数组中元素的默认值
byte
0
short
0
int
0
long
0
float
0.0
double
0.0
boolean
false
char
\u0000
引用类型1.数组2.类
null
引用类型有String、Integer等等……
5.正序遍历数组,倒序遍历数组
6.数组求和
7.数组求最大值和最小值
8.数组求平均数
9.数组扩容的策略
10.数组中插入元素
11.数组中删除元素
12.反转数组
反转可以说是倒序遍历:
13.使用冒泡排序算法排序数组
14.官方的Arrays工具类
使用Arrays工具类,要先导入包即:import.java.util.Arrays
以下是实现六种功能的方法:
1、比较两个数组值是否相等: 结果为true、false.(布尔型不能比较)
int []a={10,20,30};
int []b={10,20,30};
int []c={1,2,3};
boolean isEqual=Arrays.equals(a,b);
System.out.println(isEqual);
System.out.println(Arrays.equals(a,c));
//如果是字符串:
String[]s1={“ab”,”c”,”d”,”e”};
Arrays.sort(s1);
For(String s:s1){
System.out.println(s);
}
2、fill方法:把整个数组里的每一个元素的值进行替换为val。(void fill(Arrays,val))
3、BinarySearch:找到元素在数组当中的下标。
String[]s3={“a”,”b”,”c”,”d”,”e”,”w”};
Int index=Arrays.binarySearch(s3,”g”);
System.out.println(“该元素的下标是:”+index);
4、toString方法是把数组转换成字符串进行输出。(参数是数组,返回的是字符串)
int
[] a1={1,2,3,4};
System.
out
.println(Arrays.
toString
(a1));
即:【 String s1=Arrays.
toString
(a1);
System.
out
.println(s1);】
5、copyof把一个数组复制出一个新数组(新数组的长度为length)
int[]ints1={11,22,33,44};
int[]ints2=Arrays.coypOf(ints1,2);
System.out.println(Arrays.toString(ints2));
6、sort方法,把数组中的元素按升序排序。【参数:除了布尔型都可以,类也可以】
例,输入六个数字,实现正序排列和倒序排列,并求其数字和
Scanner input = new Scanner(System.in);
int[] score=new int[6];
int sum=0;
//让用户输入6个数字
for(int i=0;i<score.length;i++){
System.out.println("请输入第"+(i+1)+"个数字");
score[i]=input.nextInt();
sum+=score[i];
}
//sort:从小到大排序
Arrays.sort(score);
for(int i:score){
System.out.println(i);
}
//sort:从大到小排序
Arrays.sort(score);
for(int i=score.length-1;i>=0;i--){
System.out.println(score[i]);
}System.out.println(sum);
15.二维数组
数据类型[][] 变量名=new数据类型[长度][长度];
16.类和对象
类的概念:
类是具有相同属性和服务的一组对象的集合。它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属性说明和服务说明两个主要部分。
对象的概念:
对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务组成。从更抽象的角 度来说,对象是问题域或实现域中某些事物的一个抽象,它反映该事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。客观世界是由对象和对象之间的联系组成的。
类与对象的关系:
类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,而对一类对象的抽象就是类.类描述了一组有相同特性(属性)和相同行为(方法)的对象。
类与对象的区别:
1,类是一个抽象的概念,它不存在于现实中的时间/空间里,类只是为所有的对象定义了抽象的属性与行为。就好像“Person(人)”这个类,它虽然可以包含很多个体,但它本身不存在于现实世界上。
2,对象是类的一个具体。它是一个实实在在存在的东西。
3,类是一个静态的概念,类本身不携带任何数据。当没有为类创建任何对象时,类本身不存在于内存空间中。
4,对象是一个动态的概念。每一个对象都存在着有别于其它对象的属于自己的独特的属性和行为。对象的属性可以随着它自己的行为而发生改变。
17.成员变量
变量在类的里面,函数的外面;没有用static修饰,可以称为成员变量
18.构造方法
1:构造方法作用概述
给对象的数据进行初始化
2:构造方法格式
方法名与类名相同
没有返回值类型,连void都没有
没有具体的返回值
3:构造方法注意事项
如果你不提供构造方法,系统会给出默认构造方法
如果你提供了构造方法,系统将不再提供 构造方法也是可以重载的
19.成员方法
1:概述
1:类包括成员变量和方法两部分。成员变量表示类的属性,一数据域的形式表达,方法是数据的操作的定义。
2:在JAVA中,方法只能作为类的成员,也称为成员方法。方法操作类所定义的数据,以及提供对数据的访问的代码。大多数情况下,程序的其他部分都是通过类的方法和其他类的实例进行交互的。
3:在类中,除了变量外的都是成员方法。
4:方法中有一种是对成员变量进行初始化的,称为构造方法。构造方法之外的就是一般的方法了吧。
5:所以说成员方法分为构造方法和一般的方法。
2:成员方法的具体划分
1:根据返回值
有明确返回值方法
返回void类型的方法
2:根据形式参数
无参方法
带参方法
20. this关键字
首先,this关键字指向的是当前对象的引用
作用:
this.属性名称
指的是访问类中的成员变量,用来区分成员变量和局部变量(重名问题)
21.什么是零值
是指当你声明变量(分配内存)并未显式初始化时,始终为你的变量自动设置一个默认初始值的策略。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/花生_TL007/article/detail/207230
推荐阅读
article
解决使用
Mybatis
出现Invalid
value
type
for
attribute
‘fac...
在springboot中使用
Mybatis
出现Invalid
value
type
for
attribute
'fac...
赞
踩
article
java
ssm
项目
_
SSM
项目
整合基本步骤...
SSM
项目
整合1、基本概念1.1、SpringSpring是一个开源框架,Spring是于2003年兴起的一个轻量级的 ...
赞
踩
article
ssm
毕设
项目
毕业设计
过程管理系统
049a8
(
java
+VUE+Mybatis+
Maven
+Mysq...
Jdk1.8 + Tomcat8.5 +
Mysql
+ HBuilderX(Webstorm也行)+ Eclispe(...
赞
踩
article
java
-初级项目实战-(
swing
篇)-羊了个羊(动态交互
,
)...
判断t方格是否压住b方格
,
就要保证t方格的左上的黑点始终在蓝框内。即t的 x坐标(x1
,
x2)之间
,
y(y1
,
y2)之间...
赞
踩
article
JAVA
spring
-
integration
-
mqtt
配置接收字节流_
java
如何解析
mqtt
返...
引子:最近在做物联网这一块,需求是根据传感器推送过来的
数据
,动态实时展示到前端页面由于没做过这一块,之前只搭建过
mqtt
...
赞
踩
article
mqtt
协议实现
java
服务端
推送
功能(二)
java
demo
测试
...
上一篇写了安装mosQuitto和
测试
,但是用cmd命令很麻烦,有没有一个可视化软件呢? 有,需要在google浏览器下...
赞
踩
article
错误解决
error
while
loading
shared
libraries: libXXX.s...
分析原因:ld提示找不到库文件,而库文件就在当前目录中。 链接器ld默认的目录是/lib和/usr/lib,如果放在其他...
赞
踩
article
java
web
应用调用
python
机器学习
训练
的
模型
_
python
训练
的机器
模型
可以用到
java
中...
java
web
应用调用
python
机器学习
训练
的
模型
项目线上平台是用
java
编写的
web
应用程序,而深度学习使用的是p...
赞
踩
article
java
ee 笔记_
parserequest
arraysize
...
=============JSP=============== cookies生存期限就到你关闭浏览器为止 cooki...
赞
踩
article
java
Spring
定时
任务
的几种实现_
java
中
spring
项目
定时
任务
...
Spring
定时
任务
的几种实现近日项目开发
中
需要执行一些
定时
任务
,比如需要在每天凌晨时候,分析一次前一天的日志信息,借此...
赞
踩
article
java
定时
spring
_
Spring
的
定时
任务...
最近做项目遇到
定时
器,查了一些资料,总结一下用法以备忘!1.Java TimerJava
定时
器要用到
java
.util这...
赞
踩
article
Java SpringBoot集成阿里云短信与邮件服务_
<
<
em>dependency
<
/em>>
<
<
em>groupid
<
/em>>...
1.pom.xml导入jar包
<
!--阿里云短信 -->
<
<
em>dependency
<
/em>>
<
groupId>
<
em>com
<
/em>....
赞
踩
article
Java
cxf
集成
第三方
WebService
接口_
java
cxf
调用
第三方
webservice
...
一、pom引入
org.apache.
cxf
...
赞
踩
article
Java
(
SpringBoot
2
.
x
)使用POI导入数据到
E
x
cel
_poi4.1.
2
和 spri...
一、前言最近做一个推送服务将系统某些报表,通过邮件附件的形式推送给指定的人,首先我们需要在服务端生成报表的e
x
cel文档...
赞
踩
article
Java
SpringBoot
集成
微信
告警
推送
服务_
springboot
+定时任务+
微信
告警
...
一.申请
微信
告警
模板登录
微信
公众号平台,在服务里面找到模板消息我们点击从模板库中添加一个模板消息可以通过关键字搜索
告警
模...
赞
踩
article
十五届
蓝桥杯
第三期
模拟赛题单(
C++
、
java
、
Python
)_求 1234567890123456...
十五届
蓝桥杯
第三期
模拟赛题单(
C++
、
java
、
Python
)_求 12345678901234567890123456...
赞
踩
article
十五届
蓝桥
杯
第二期模拟赛题单(C++、
java
、
Python
)_
蓝桥
杯
灌水...
十五届
蓝桥
杯
第二期模拟赛题单(C++、
java
、
Python
)_
蓝桥
杯
灌水
蓝桥
杯
灌水 备战202...
赞
踩
article
Exception
in
thread
“
ma
in
“
java
.
lang
.NoClassDefFou...
Load
in
g class `com.mysql.jdbc.Driver'. This is deprecated. T...
赞
踩
article
【
Java
】
数据类型
与
变量
...
在
Java
中
数据类型
主要分为两类:基本
数据类型
和引用
数据类型
。基本
数据类型
有四类八种:在程序中,除了有始终不变的常量外,...
赞
踩
article
15
. JAVA
反射
机制 Part 1(
Class
类
、
反射
、
反射
机制) ----- 学习笔记_禁止...
本章目标:
15
.1 认识
Class
类
15
.2
Class
类
的
使用
_禁止
直接
使用
外部
数据
作为
反射
操作
中的
类
名
/方法
名
禁止直...
赞
踩
相关标签
mybatis
java
sql
java ssm项目
vue.js
开发语言
spring
开发工具
网络
linux
库
java ee
java笔记
srping
quartz
task
java 定时 spring
cxf
webservice
spring boot
springboot
poi
excel