001 JAVA基础
文章目录
- JAVA环境搭建
- JAVA基础语法
- 数据类型
- JAVA数据类型
- 基本数据类型大小
- 基本数据类型包装类
- 自动类型转换
- 强制类型转换
- 常量
- 控制台的输入---Scanner的使用
- 数组
- 如何使用数组
- 数组的遍历
- JAVA面向对象
- 类与对象
- 如何定义JAVA中的类
- JAVA中的构造方法
- 多态
- 引用多态
- 方法多态
- 多态中的引用类型转换
- JAVA中的接口
- 声明接口
- 使用接口
- JAVA异常
- 什么是异常
- 异常的分类
- Throwable类的子类
- 常用异常类
- 异常示例
- 捕获异常
JAVA环境搭建
下载JDK并添加环境变量
- 添加环境变量JAVA_HOME(JDK的安装目录)
C:\Program Files\Java\jdk1.8.0_66
- 添加环境变量 JRE_HOME(JRE的安装目录)
C:\Program Files\Java\jre1.8.0_66
- 添加环境变量CLASSPATH(JAVA类库的目录)
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
- 在Path环境变量添加JAVA和JRE的bin目录
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
- 验证环境变量
检验是否配置成功 运行cmd 输入 java -version (java 和 -version 之间有空格)
C:\Users\87321>java -version
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)
如上所示,说明安装和配置成功
JAVA基础语法
数据类型
JAVA数据类型
基本数据类型和引用数据类型的区别在于,基本数据类型的值直接保存在栈中,而引用数据类型保存在堆内存
基本数据类型大小
- byte 1字节
- short 2字节
- int 4字节
- long 8字节
- float 4字节
- double 8字节
- char 2字节
基本数据类型包装类
在JAVA中,提供了这么一种方式,可以方便做数据类型转换,叫做包装类。JAVA的8个基本数据类型都有对应的包装类用于数据类型转换。
自动类型转换
在JAVA程序中,不同的基本数据类型的数据之间经常需要进行相互转换。例如
int nNum1=100; //n为整数
double nNum2=nNum1; //nNum1自动转换为double
代码中int型变量可以直接转换为double型变量完成赋值操作,这种转换称为自动转换。完成自动转换的条件为:
- 目标类型能与源类型兼容,如double类型兼容int型,但是char型不能兼容int型
- 目标类型大于源类型,如double类型长度为8字节,int类型为4字节,因此double类型的变量里可以直接存int
强制类型转换
以下代码不能完成自动类型转换
int age=20;
char sex='男';
char result=age+sex
这个时候无法完成自动类型转换,就需要使用强制类型转换。格式:(数据类型)数值
int age=20;
char sex='男';
char result=(char)age+sex
常量
所谓常量,可以理解为一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。格式:final 常量名=值
final double PI=3.14;
final int MAX=100
控制台的输入—Scanner的使用
使用Scanner分为三步
- 导入Scanner类
import java.util.Scanner;
- 定义一个Scanner类型的变量
Scanner input =new Scanner(System.in)
- 获取键盘输入的数据
String bookName=input.next(); //读取字符串
int nID=input.nextInt(); //读取整形
数组
如何使用数组
- 声明数组(注意:声明数组时,不需要设置数组长度)
int scores[];
int[] scores;
- 分配空间
int scores[]=new int[10];
- 赋值
scores[1]=100; //直接赋值
int scores[]={1,2,3,4,5}; //声明并赋值
int scores[]=new int[10]{1,2,3,4,5}; //声明并赋值
注意:数组元素根据类型不同,有不同的初始值
- int默认初始值为0
- String默认初始值为null
- double默认初始值为0.0
数组的遍历
- 使用for循环
int scores[]={1,2,3,4,5};
for (int i=0;i<scores.length;i++)
{System.out.print(scores[i]);
}
- 使用foreach
int scores[]={1,2,3,4,5};
for (int score:scores)
{System.out.print(score);
}
JAVA面向对象
类与对象
如何定义JAVA中的类
- 指定类的访问属性
- 定义类名
- 编写类的属性
- 编写类的方法
public class Cellphone {//属性private float cpu;private float screen;private float mem;//方法public void call(){System.out.print("打电话");}
}
如何使用JAVA中的对象
- 创建对象
- 使用对象
Cellphone phone=new Cellphone();
phone.call();
JAVA中的构造方法
构造方法的特点
- 使用new+构造方法 创建一个新的对象
- 构造方法与类名一致
- 构造方法无返回值
public class Cellphone {//属性private float cpu;private float screen;private float mem;//无参构造public Cellphone() {}//有参构造public Cellphone(float cpu, float screen, float mem) {this.cpu = cpu;this.screen = screen;this.mem = mem;}//方法public void call(){System.out.print("打电话");}
}
多态
引用多态
- 父类的引用可以指向本类的对象
Animal obj1=new Animal();
- 父类的引用可以指向子类的对象
Animal obj1=new Dog();
Animal obj1=new Cat();
方法多态
obj1.eat(); //调用父类的
obj2.eat(); //子类重写
obj3.eat(); //子类重写,依然调用父类的
多态中的引用类型转换
- 向上类型转换(隐式/自动类型转换),是小类型到大类型的转换
Dog obj1=new Dog();
Animal obj2=obj1;
- 向下类型转换(强制类型转换),是大类型到小类型的转换
Dog obj3=(Dog)obj2;
- 使用instanceof检测是否可以强制转换
Dog dog=new Dog();
Animal animal=new Animal();
if(animal instanceof Dog)
{Dog dog1=(Dog)animal;
}
JAVA中的接口
声明接口
类是一种具体实现体,而接口定义了某一批类所遵守的规范,接口不关心这些类的内部数据,也不关心这些类里的实现细节,他只规定这些类里必须提供某些方法。
//接口定义使用关键字inerface
[修饰符] inerface 接口名 [extends 父接口1,extends 父接口2...]
{//常量//抽象方法
}//示例:
public interface IAction {void test1(); //默认接口中的方法就是公有方法 不需要实现void test2();void test3();
}
接口的存在就是弥补JAVA的单继承,JAVA的单继承主要是继承父类的数据,而一个类的行为方法一般都是使用接口进行扩展,一个类可以实现多个接口,扩展无限多的方法
使用接口
实现接口使用implements关键字,如果要继承父类,必须在实现接口之前
[修饰符] class 类名 extends 父类 implements 接口1,接口2...
{}//示例:
public class Test implements IAction{//实现接口 必须重新接口中的所有方法@Overridepublic void test1() {}@Overridepublic void test2() {}@Overridepublic void test3() {}
}
接口的特点:
- 接口默认就是abstract修饰
- 接口默认只能是public的
- 接口可以继承自多个父接口
- 接口中的属性是常量(public static final …)
- 接口中的方法都是抽象方法(public abstract)
JAVA异常
什么是异常
在程序执行中,任何中断正常程序流程的条件就是错误或异常。例如,程序运行发生下列情况时,会发生异常:
- 想打开的文件不存在
- 网络连接中断
- 接受了不符合逻辑的操作数
- 系统资源不足
异常的分类
- Throwable类是JAVA语言中所有错误和异常的超类
- Error RuntimeException及其子类,其他异常表示一种运行时的困难,他通常由环境效果引起,可以进行处理
Throwable类的子类
在JAVA编程语言中,错误类(Error)定义被认为是不能恢复的严重错误条件(如资源耗尽)。在大多数情况下,当遇到这样的错误时,建议让程序中断,应用程序一般不对此问题进行处理。
异常处理程序运行程序捕获异常(Exception),处理它们,然后继续程序执行。他是分层把关,因此,错误情况不会介入到程序正常流程中。
常用异常类
异常类 | 原因 |
---|---|
ArtimeticException | 出现异常的运算条件时,抛出此异常 |
ArrayStoreException | 试图将错误类型的对象存储到一个对象数组时抛出的异常 |
ClassCastException | 当试图将对象强制转换为不是实例的子类时。抛出该异常 |
IndexOutOfBoundsException | 指示某排序索引超出范围时抛出 |
NullPointException | 当应用程序试图在需要对象的地方使用null时,抛出该异常 |
异常示例
public class Main {public static void main(String[] args) {String str=null;System.out.println(str.length());}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N9jPVPNV-1623031054233)(001 JAVA基础.assets/1622357744881.png)]
捕获异常
- 使用try-catch捕获异常
语法格式:
try
{//代码块中的代码可能抛出异常
}
catch(MyExceptionType e)
{//处理try代码块中抛出的MyExceptionType类型的异常实例e
}
finally
{//无论是否有异常抛出,此部分代码总在最后被执行
}
示例:
public class Main {public static void main(String[] args) {String str=null;int lenth=0;try {lenth=str.length();System.out.println(lenth);} catch (NullPointerException e) {System.out.println("Exception occured:"+e);}finally {System.out.println("Completed!");}}
}
运行结果:
Exception occured:java.lang.NullPointerException
Completed!Process finished with exit code 0
- 多异常情况下的catch
当try代码块中可能会抛出1个到多个异常,如何处理这可能的多个异常?非常简单,就是按照异常的包容性(子类在前,父类在后),把需要捕获后处理的异常对应的catch逐次排列即可
public class Main {public static void main(String[] args) {String str=null;int length=0;try {length=str.length();System.out.println(length);}catch (NullPointerException e){System.out.println("Exception occured:"+e);}catch (ArithmeticException e){System.out.println("Exception occured:"+e);}catch (Exception e){System.out.println("Exception occured:"+e);}}
}
- 捕获所有异常使用Exception
catch(Exception e)
{...
}
001 JAVA基础相关推荐
- Java基础概念性的知识总结
属于个人的所学的知识总结,不是全面的 1.JDK.JRE和JVM三者的区别 01.JDK:(Java Development ToolKit)Java开发工具包,是整个Java的核心.包括了Java的 ...
- Java基础day16
Java基础day16 Java基础day16-集合3 1.Map集合 1.1Map集合概述和特点 1.2Map集合的基本功能 1.3Map集合的获取功能 1.4Map集合的遍历(方式1) 1.5Ma ...
- java基础-BigDecimal类常用方法介绍
java基础-BigDecimal类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.BigDecimal类概述 我们知道浮点数的计算结果是未知的.原因是计算机二进制 ...
- java(5)---Java基础知识大全
Java基础知识大全 一.基础知识: 1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平 ...
- 分享 java 基础 + 进阶精简资料(视频 + 源码 + 就业项目 + 面试报装)
前言 有些同学可能会觉得奇怪,为什么会写这么一篇文章,Java 基础不是大学就学过了吗,就这呀,这有什么好写的? 但是从事开发越久才越知道基础有多重要,不止 Java 基础,还有计算机网络基础与操作系 ...
- 【黑马】Java基础从入门到起飞目录合集
视频链接: Java入门到起飞(上部):BV17F411T7Ao Java入门到起飞(下部):BV1yW4y1Y7Ms 学习时间: 2023/02/01 -- 2023/03/09 断断续续的学习,历 ...
- java基础-字符串String
今天要介绍的知识点为String,也叫字符串.这是个应用的比较广泛并且充满神奇色彩的知识点.为什么说神奇呢?因为它涉及了好些个看起来高深莫测的概念.并且,这个知识点其实已经属于java中引用类型的知识 ...
- 转载java基础总结大全(使用)
原文地址 Java基础总结大全(实用) 一.基础知识: 1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. jav ...
- java第二篇Java基础
Java分为三个版本:Java SE(标准版).Java EE(企业版).Java ME(微型版).其中JavaSE就是大家学JavaEE和JavaME的基础,换而言之学Java先从JavaSE开始, ...
最新文章
- 嵌入式 Hi3515视频编码(H.264)笔记
- 二、通过工厂方法来配置bean
- iOS GCD中级篇 - dispatch_group的理解及使用
- laravel php配置,PHP Laravel框架路由配置及设置技巧全解
- Python编程基础:第十六节 元组Tuple
- java教程pdf下载百度云,面试题+笔记+项目实战
- react 小程序转换_如何将AngularJS 1.x应用程序转换为React应用程序-一次转换一个组件。
- SSH+ExtJS实战开发视频教程
- m4s格式转换mp3_音频格式转换器哪个好,推荐几款免费的mp3格式转换器
- 让人感到惊艳的5款数据可视化大屏产品
- java field 赋值_Java Field.set()向对象的这个Field属性设置新值value
- Python 爬取蜂鸟网的照片
- 2023二建建筑施工备考第二天Day02
- 安装pocoui报错
- 苹果虚拟home键_苹果手机几个实用小技巧,相见恨晚,快试试你的手机!
- Problem M: 薪酬计算 之二
- Java初学之人机猜拳游戏
- SX1278传输距离测试
- OSError: exception: access violation writing,
- XenServer Tools
热门文章
- CV之IS:利用pixellib库基于deeplabv3_xception模型对《庆余年》片段实现语义分割/图像分割简单代码全实现
- ML之MIC:利用有无噪音的正余弦函数理解相关性指标的不同(多图绘制Pearson系数、最大信息系数MIC)
- session may be lost when use window.open to open a new window
- 使用tomcat时,不用给webapps文件放入文件,直接访问项目方法
- 详述JavaScript数组
- [R]R语言中的%%和%.%
- Set集合设置变量自增长
- uniGUI试用笔记(十一)
- BLE-NRF51822教程13-连接时触发配对
- LeetCode6-Z字形变换