第一天学习:JVM、数据类型、运算符、数组

 

  1. Java语言的特点

    面向对象的语言:

    • 两个基本概念:类、对象。

    • 三大特性:封装、继承、多态。

    • 支持静态和动态风格的代码继承及重用

    健壮性:提供了一个相对安全的内存管理和访问机制

    (结构中立)跨平台性:通过JAVA语言编写的应用程序在不同系统平台上都可以运行。原理:只要在需要运行的java应用程序的操作系统上,先安装一个JAVA虚拟机(JVM Java Virtual Machine)即可。由JVM 来负责Java程序在该系统中的运行。

    多线程

    安全

    平台无关性(Platform Independent):Java使用解释器来执行代码,所以可以实现“一次编写,到处运行”

    简单:风格类似C++,摒弃了C++中容易引发程序错误的地方

    Java两种核心机制

    Java虚拟机(JVM Java Virtual Machine),简称JVM,是运行所有Java程序的假想计算机,是Java程序的 运行环境,是Java 最具吸引力的特性之一。我们编写的Java代码,都运行在 JVM 之上。Java语言的跨平台特性是由JVM实现的,我们编写的程序运行在JVM上,而JVM 运行在操作系统上。Java的虚拟机本身不具备跨平台功能的,每个操作系统下都有不同版本的虚拟机

    在一台计算机上由软件或硬件模拟的计算机。

    Java虚拟机(JVM)读取并处理经编译过的平台无关的字节码class文件 。 Java编译器针对Java虚拟机产生class文件,因此是独立于平台的。 Java解释器负责将Java虚拟机的代码在特定的平台上运行。

     

    垃圾收集机制(Garbage Collection)

    ①不再使用的内存空间应回收——垃圾回收

    ②垃圾回收在Java程序运行过程中自动进行,程序员无法进行精确控制和干预。

    编写HelloWorld

    JDK和JRE关系

    • JRE (Java Runtime Environment) :是Java程序的运行时环境,JVM+核心类库。

    • JDK(Java Development Kit):是Java程序开发工具包,JRE+开发人员使用的工具。

    • JDK > JRE > JVM

    • 我们想要运行一个已有的Java程序,那么只需安装 JRE 即可。

      我们想要开发一个全新的Java程序,那么必须安装 JDK 。

    DOS常用命令:盘符名: (盘符切换命令) dir(查看当前文件夹) cd 文件夹名 (进入文件夹命令) cd..(退出文件夹命令) cd\(退出到磁盘根目录) cls(清屏)

    编译:javac 源文件名.后缀名(举例:java HelloWorld.java)

    运行:java 类名字(java HelloWorld) 存放在方法区的类代码区

    关键字:public class static void

    标识符:

    • 英文字母26个(区分大小写) 、 0-9数字 、 $(美元符号) 和 _(下划线) ,数字不能作为首字母

    • 汉字可以作为JAVA的合法标识符,因为字符集使用的是Unicode编码

    • 关键字不能作为标识符使用

    • 标准类库的类不能作为标识符使用

    基本数据类型分类:四类八种基本数据类型:整数、浮点数、字符、布尔。

    数据类型关键字内存占用取值范围
    字节型byte1个字节-128 ~ 127
    短整型short2个字节-32768 - 32767
    整型int(默认)4个字节-2^31 - 2^31 - 1
    长整型long8个字节-2^63 - 2^63 - 1
    单精度浮点数float4个字节1.4013E-45~3.4028E+38
    双精度浮点数double(默认)8个字节4.9E-324~1.7977E+308
    字符型char2个字节0-65535
    布尔型boolean1个字节true,false

    引用类型:类、接口、数组

    变量的定义:常量是固定不变的数据,那么在程序中可以变化的量称为变量。

    • 变量定义的格式包括三个要素: 数据类型 、 变量名 、 数据值 。

      数据类型 变量名 = 数据值;

    • 变量名称:在同一个大括号范围内,变量的名字不可以相同。 (不同方法内局部变量的名字可以相同,因为变量只在该方法内有效)

      变量赋值:定义的变量,不赋值不能使用。

    数据类型转换

    自动转换:将 取值范围小的类型 自动提升为 取值范围大的类型 。

    强制类型转换:将 取值范围大的类型 强制转换成 取值范围小的类型 。

    数据类型 变量名 = (数据类型)被转数据值;

    // double类型数据强制转成int类型,直接去掉小数点

    int i = (int)1.5;

    注意:浮点转成整数,直接取消小数点,可能造成数据损失精度。

    int 强制转成 short 砍掉2个字节,可能造成数据丢失。

    运算符

    算术运算符:注意a++和++a区别复制与那算符

    赋值运算符:= +=(+= 是一个运算符,只运算一次,并带有强制转换的特点,) -= /= %=

    比较运算符:== < > <= >= !=

    逻辑运算符: &&短路与 ||短路或 !取反

    三元运算符:

    数据类型 变量名 = 布尔类型表达式?结果1:结果2

    布尔类型表达式结果是true,三元运算符整体结果为结果1,赋值给变量。

    布尔类型表达式结果是false,三元运算符整体结果为结果2,赋值给变量。

     

    方法入门

    方法:

    就是将一个

    功能

    抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。

    修饰符 返回值类型 方法名 (参数列表){

    代码...

    return ;

     

    举例:

    public static void methodName() {

    System.out.println("这是一个方法");

    }

    JShell脚本工具

    当我们编写的代码非常少的时候,而又不愿意编写类,main方法,也不愿意去编译和运 行,这个时候可以使用JShell工具。 启动JShell工具,在DOS命令行直接输入JShell命令。JShell工具,只适合片段代码的测试,开发更多内容,建议编写在方法中。 流程控制语句

     

    判断语句、选择语句、循环语句、跳出语句(break、continue)、死循环、嵌套循环

    IDEA的使用

    调用方法的三种形式:直接调用、赋值调用、输出语句调用

    方法重载

    :指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返

    回值类型无关。

    参数列表:个数不同,数据类型不同,顺序不同。

    数组3种定义和访问

    数组概念: 数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。

    1. 数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度]; int[] arr = new int[3];

    2. 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...}; int[] arr = new int[]{1,2,3,4};

    3. 数据类型[] 数组名 = {元素1,元素2,元素3...};

      int[ ] arr = {1,2,3,4,5};

    4. 索引访问数组中的元素:

      数组名[索引]=数值,为数组中的元素赋值 arr[0] = 1;

      变量=数组名[索引],获取出数组中的元素 int i = arr[0];

    JAVA虚拟机的内存划分

    寄存器 给CPU使用,和我们开发无关。

    本地方法栈 JVM在使用操作系统功能的时候使用,和我们开发无关。

    方法区 存储可以运行的class文件。

    堆内存 存储对象或者数组,new来创建的,都存储在堆内存。

    方法栈 方法运行时使用的内存,比如main方法运行,进入方法栈中执行。

    一个数组内存图

    img

    两个数组内存图

    img

    两个变量指向同一个数组img

     

    数组异常

    数组越界异常:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:

    数组空指针异常:Exception in thread "main" java.lang.NullPointerException

    数组遍历(重点)

    遍历、数组获取最大值元素、数组反转

    数组作为方法参数和返回值

    数组作为方法参数传递,传递的参数是数组内存的地址。

    数组作为方法的返回值,返回的是数组的内存地址

    方法的参数类型区别(易错)

    方法的参数为基本类型时**,传递的是数据值.** 方法的参数为引用类型时**,传递的是地址值**

    面向对象 三大基本特征:封装、继承、多态

    类的定义

    定义类:就是定义类的成员,包括成员变量成员方法。(驼峰命名法)

    成员变量:和以前定义变量几乎是一样的。只不过位置发生了改变。在类中,方法外。(小驼峰命名法)

    成员方法:和以前定义方法几乎是一样的。只不过把**static去掉**,static的作用在面向对象后面课程中再详细

    讲解。

    public class Student {

    //成员变量

    String name;//姓名

    int age;//年龄

    //成员方法

    //学习的方法

    public void study() {

    System.out.println("好好学习,天天向上");

    }

    //吃饭的方法

    public void eat() {

    System.out.println("学习饿了要吃饭");

    }

    }

    对象的使用

    创建对象:类名 对象名 = new 类名();

    使用对象访问类中的成员: 对象名.成员变量; 对象名.成员方法();

       
        
        
        
        
        
        
        
        
  2. 引用类型:类、接口、数组

  3. 变量的定义:常量是固定不变的数据,那么在程序中可以变化的量称为变量。

    • 变量定义的格式包括三个要素: 数据类型 、 变量名 、 数据值 。

      数据类型 变量名 = 数据值;

    • 变量名称:在同一个大括号范围内,变量的名字不可以相同。 (不同方法内局部变量的名字可以相同,因为变量只在该方法内有效)

      变量赋值:定义的变量,不赋值不能使用。

数据类型转换

  1. 自动转换:将 取值范围小的类型 自动提升为 取值范围大的类型 。

  2. 强制类型转换:将 取值范围大的类型 强制转换成 取值范围小的类型 。

  • 数据类型 变量名 = (数据类型)被转数据值;

  • // double类型数据强制转成int类型,直接去掉小数点

  • int i = (int)1.5;

注意:浮点转成整数,直接取消小数点,可能造成数据损失精度。

int 强制转成 short 砍掉2个字节,可能造成数据丢失。

运算符

  1. 算术运算符:注意a++和++a区别复制与那算符

  2. 赋值运算符:= +=(+= 是一个运算符,只运算一次,并带有强制转换的特点,) -= /= %=

  3. 比较运算符:== < > <= >= !=

  4. 逻辑运算符: &&短路与 ||短路或 !取反

  5. 三元运算符:

    数据类型 变量名 = 布尔类型表达式?结果1:结果2

    布尔类型表达式结果是true,三元运算符整体结果为结果1,赋值给变量。

    布尔类型表达式结果是false,三元运算符整体结果为结果2,赋值给变量。

     

    方法入门

  6. 方法:

    就是将一个

    功能

    抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。

    修饰符 返回值类型 方法名 (参数列表){

    代码...

    return ;

     

    举例:

    public static void methodName() {

    System.out.println("这是一个方法");

    }

    JShell脚本工具

  7. 当我们编写的代码非常少的时候,而又不愿意编写类,main方法,也不愿意去编译和运 行,这个时候可以使用JShell工具。 启动JShell工具,在DOS命令行直接输入JShell命令。JShell工具,只适合片段代码的测试,开发更多内容,建议编写在方法中。 流程控制语句

     

  8. 判断语句、选择语句、循环语句、跳出语句(break、continue)、死循环、嵌套循环

  9. IDEA的使用

  10. 调用方法的三种形式:直接调用、赋值调用、输出语句调用

  11. 方法重载

    :指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返

    回值类型无关。

    参数列表:个数不同,数据类型不同,顺序不同。

    数组3种定义和访问

  12. 数组概念: 数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。

    1. 数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度]; int[] arr = new int[3];

    2. 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...}; int[] arr = new int[]{1,2,3,4};

    3. 数据类型[] 数组名 = {元素1,元素2,元素3...};

      int[ ] arr = {1,2,3,4,5};

    4. 索引访问数组中的元素:

      数组名[索引]=数值,为数组中的元素赋值 arr[0] = 1;

      变量=数组名[索引],获取出数组中的元素 int i = arr[0];

  13. JAVA虚拟机的内存划分

    寄存器 给CPU使用,和我们开发无关。

    本地方法栈 JVM在使用操作系统功能的时候使用,和我们开发无关。

    方法区 存储可以运行的class文件。

    堆内存 存储对象或者数组,new来创建的,都存储在堆内存。

    方法栈 方法运行时使用的内存,比如main方法运行,进入方法栈中执行。

  1. 一个数组内存图

img

  1. 两个数组内存图

img

  1. 两个变量指向同一个数组img

 

数组异常

  1. 数组越界异常:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:

  2. 数组空指针异常:Exception in thread "main" java.lang.NullPointerException

数组遍历(重点)

  1. 遍历、数组获取最大值元素、数组反转

数组作为方法参数和返回值

  1. 数组作为方法参数传递,传递的参数是数组内存的地址。

  2. 数组作为方法的返回值,返回的是数组的内存地址

方法的参数类型区别(易错)

方法的参数为基本类型时**,传递的是数据值.** 方法的参数为引用类型时**,传递的是地址值**

面向对象 三大基本特征:封装、继承、多态

  • 类的定义

定义类:就是定义类的成员,包括成员变量成员方法。(驼峰命名法)

成员变量:和以前定义变量几乎是一样的。只不过位置发生了改变。在类中,方法外。(小驼峰命名法)

成员方法:和以前定义方法几乎是一样的。只不过把**static去掉**,static的作用在面向对象后面课程中再详细

讲解。

public class Student {

//成员变量

String name;//姓名

int age;//年龄

//成员方法

//学习的方法

public void study() {

System.out.println("好好学习,天天向上");

}

//吃饭的方法

public void eat() {

System.out.println("学习饿了要吃饭");

}

}

  • 对象的使用

创建对象:类名 对象名 = new 类名();

使用对象访问类中的成员: 对象名.成员变量; 对象名.成员方法();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值