文章目录

  • JAVA环境搭建
  • JAVA基础语法
    • 数据类型
      • JAVA数据类型
      • 基本数据类型大小
      • 基本数据类型包装类
      • 自动类型转换
      • 强制类型转换
      • 常量
    • 控制台的输入---Scanner的使用
    • 数组
      • 如何使用数组
      • 数组的遍历
  • JAVA面向对象
    • 类与对象
      • 如何定义JAVA中的类
      • JAVA中的构造方法
    • 多态
      • 引用多态
      • 方法多态
    • 多态中的引用类型转换
    • JAVA中的接口
    • 声明接口
    • 使用接口
  • JAVA异常
    • 什么是异常
    • 异常的分类
    • Throwable类的子类
    • 常用异常类
    • 异常示例
    • 捕获异常

JAVA环境搭建

下载JDK并添加环境变量

  1. 添加环境变量JAVA_HOME(JDK的安装目录)
C:\Program Files\Java\jdk1.8.0_66
  1. 添加环境变量 JRE_HOME(JRE的安装目录)
C:\Program Files\Java\jre1.8.0_66
  1. 添加环境变量CLASSPATH(JAVA类库的目录)
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
  1. 在Path环境变量添加JAVA和JRE的bin目录
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
  1. 验证环境变量

检验是否配置成功 运行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型变量完成赋值操作,这种转换称为自动转换。完成自动转换的条件为:

  1. 目标类型能与源类型兼容,如double类型兼容int型,但是char型不能兼容int型
  2. 目标类型大于源类型,如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分为三步

  1. 导入Scanner类
import java.util.Scanner;
  1. 定义一个Scanner类型的变量
Scanner input =new Scanner(System.in)
  1. 获取键盘输入的数据
String bookName=input.next();   //读取字符串
int nID=input.nextInt();       //读取整形

数组

如何使用数组

  1. 声明数组(注意:声明数组时,不需要设置数组长度)
int scores[];
int[] scores;
  1. 分配空间
int scores[]=new int[10];
  1. 赋值
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

数组的遍历

  1. 使用for循环
int scores[]={1,2,3,4,5};
for (int i=0;i<scores.length;i++)
{System.out.print(scores[i]);
}
  1. 使用foreach
int scores[]={1,2,3,4,5};
for (int score:scores)
{System.out.print(score);
}

JAVA面向对象

类与对象

如何定义JAVA中的类

  1. 指定类的访问属性
  2. 定义类名
  3. 编写类的属性
  4. 编写类的方法
public class Cellphone {//属性private float cpu;private float screen;private float mem;//方法public void call(){System.out.print("打电话");}
}

如何使用JAVA中的对象

  1. 创建对象
  2. 使用对象
Cellphone phone=new Cellphone();
phone.call();

JAVA中的构造方法

构造方法的特点

  1. 使用new+构造方法 创建一个新的对象
  2. 构造方法与类名一致
  3. 构造方法无返回值
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基础相关推荐

  1. Java基础概念性的知识总结

    属于个人的所学的知识总结,不是全面的 1.JDK.JRE和JVM三者的区别 01.JDK:(Java Development ToolKit)Java开发工具包,是整个Java的核心.包括了Java的 ...

  2. Java基础day16

    Java基础day16 Java基础day16-集合3 1.Map集合 1.1Map集合概述和特点 1.2Map集合的基本功能 1.3Map集合的获取功能 1.4Map集合的遍历(方式1) 1.5Ma ...

  3. java基础-BigDecimal类常用方法介绍

    java基础-BigDecimal类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.BigDecimal类概述 我们知道浮点数的计算结果是未知的.原因是计算机二进制 ...

  4. java(5)---Java基础知识大全

    Java基础知识大全 一.基础知识:  1.JVM.JRE和JDK的区别:  JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性.  java语言是跨平 ...

  5. 分享 java 基础 + 进阶精简资料(视频 + 源码 + 就业项目 + 面试报装)

    前言 有些同学可能会觉得奇怪,为什么会写这么一篇文章,Java 基础不是大学就学过了吗,就这呀,这有什么好写的? 但是从事开发越久才越知道基础有多重要,不止 Java 基础,还有计算机网络基础与操作系 ...

  6. 【黑马】Java基础从入门到起飞目录合集

    视频链接: Java入门到起飞(上部):BV17F411T7Ao Java入门到起飞(下部):BV1yW4y1Y7Ms 学习时间: 2023/02/01 -- 2023/03/09 断断续续的学习,历 ...

  7. java基础-字符串String

    今天要介绍的知识点为String,也叫字符串.这是个应用的比较广泛并且充满神奇色彩的知识点.为什么说神奇呢?因为它涉及了好些个看起来高深莫测的概念.并且,这个知识点其实已经属于java中引用类型的知识 ...

  8. 转载java基础总结大全(使用)

    原文地址 Java基础总结大全(实用) 一.基础知识: 1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. jav ...

  9. java第二篇Java基础

    Java分为三个版本:Java SE(标准版).Java EE(企业版).Java ME(微型版).其中JavaSE就是大家学JavaEE和JavaME的基础,换而言之学Java先从JavaSE开始, ...

最新文章

  1. 嵌入式 Hi3515视频编码(H.264)笔记
  2. 二、通过工厂方法来配置bean
  3. iOS GCD中级篇 - dispatch_group的理解及使用
  4. laravel php配置,PHP Laravel框架路由配置及设置技巧全解
  5. Python编程基础:第十六节 元组Tuple
  6. java教程pdf下载百度云,面试题+笔记+项目实战
  7. react 小程序转换_如何将AngularJS 1.x应用程序转换为React应用程序-一次转换一个组件。
  8. SSH+ExtJS实战开发视频教程
  9. m4s格式转换mp3_音频格式转换器哪个好,推荐几款免费的mp3格式转换器
  10. 让人感到惊艳的5款数据可视化大屏产品
  11. java field 赋值_Java Field.set()向对象的这个Field属性设置新值value
  12. Python 爬取蜂鸟网的照片
  13. 2023二建建筑施工备考第二天Day02
  14. 安装pocoui报错
  15. 苹果虚拟home键_苹果手机几个实用小技巧,相见恨晚,快试试你的手机!
  16. Problem M: 薪酬计算 之二
  17. Java初学之人机猜拳游戏
  18. SX1278传输距离测试
  19. OSError: exception: access violation writing,
  20. XenServer Tools

热门文章

  1. CV之IS:利用pixellib库基于deeplabv3_xception模型对《庆余年》片段实现语义分割/图像分割简单代码全实现
  2. ML之MIC:利用有无噪音的正余弦函数理解相关性指标的不同(多图绘制Pearson系数、最大信息系数MIC)
  3. session may be lost when use window.open to open a new window
  4. 使用tomcat时,不用给webapps文件放入文件,直接访问项目方法
  5. 详述JavaScript数组
  6. [R]R语言中的%%和%.%
  7. Set集合设置变量自增长
  8. uniGUI试用笔记(十一)
  9. BLE-NRF51822教程13-连接时触发配对
  10. LeetCode6-Z字形变换