[笔记] 疯狂JAVA讲义(第3版)第3章 数据类型和运算符

简介: [笔记] 疯狂JAVA讲义(第3版)第3章 数据类型和运算符

概述

Java中的注释,数据类型,运算符。

第3章 数据类型和运算符

Java是一门强类型语言,强类型包含两方面含义:1、所有变量必须先先声明后使用;2、指定类型的变量只能接受类型与之匹配的值。

3.1 注释

注释用来说明代码的作用,某个类的用途、某个方法的功能,方法的参数,返回值的数据类型及意义等。

程序注释是源代码的一个重要部分,对于一份规范的程序代码而言,注释应该占到源代码的1/3以上。

Java的注释类型有3种:单行注释,多行注释、文档注释。

3.1.1 单行注释和多行注释

单行注释: // 注释内容

多行注释: /*注释内容可以跨越多行*/

除了增加代码可读性,合理利用注释可以便于排查错误。

3.1.2 文档注释

文档注释用于生成API文档,API文档主要用于说明类、方法、成员变量的功能。

因此Javadoc工具值处理文档源文件在类、接口、方法、成员变量、构造器和内部类之前的注释。且默认只处理public和protected修饰的。

文档注释:/** ... */


Javadoc 命令用法: 生成API文档

Javadoc 选项 java源文件|包

常用选项 -d<directory> 指定API文档保存目录

-windowtitle<text> 设置API文档的浏览器窗口标题

-doctitle<html-code> 指定一个HTML格式的文本,用于指定概述页面的标题

-header<html-code> 每个页面的页眉

例:

javadoc -d apidoc -windowtitle 测试 -doctitle 学习javadoc工具的测试API文档 -header 我的类 *Test.java 


//注释:这个*是通配符,代表所有名字后面有Test.java的文件

3.2 标识符和关键字

3.2.1 分隔符

Java语言里的分号,花括号,方括号,圆括号,空格,圆点具有特殊的分隔作用,被称为分隔符。

  1. 分号;
    Java语言使用分号作为语句的分隔,每个Java语句必须以分号结尾。
  2. 花括号{}
    花括号定义代码块,代码块逻辑上是一个整体
  3. 方括号
  4. 方括号用于访问数组元素,通过跟在数组变量名后。
  5. 圆括号
    参数传递、合成表达式、强制类型转换
  6. 空格
  7. 圆点
    类.成员

3.2.2 标识符规则

以字母、下划线和$开头,后面可以是字母、数字、下划线,$。此处字母不仅可以是英文,还可以是中文、日文等。

3.2.3 Java关键字

特殊用途的单词,不可以作为标识符。

3.3 数据类型分类

声明变量:

type varName [=初始值];

java支持的类型分两种,基本类型和引用类型。

基本类型包括boolen和数值类型。

引用类型包括类、接口和数组类型,还有一种特殊的null类型。实际上,引用类型变量就是一个指针,只是Java不在使用指针这个说法。

3.4 基本数据类型(8种)

3.4.1 整型

3.4.2 字符型

表示单个字符,使用’'括起来。Java使用16位的Unicode字符集作为编码方式,支持中文字符。

3.4.3 浮点型

3.4.4 数值中使用下划线分割

程序员可以在数值中使用下划线分割,方便分辨数字。

int binVal = 0B1000_0000_0000_0000_0000_0000_0000_0011;

double pi = 3.14_15_92_65_36;

3.4.5 布尔型

表示逻辑真(true)或假(false)。

只能有这两个值。其他类型不能转换成boolean类型

3.5 基本类型的类型转换

3.5.1 自动类型转换

范围小的可以向范围大的自动类型转换。

即箭头左边可以转换到右边的。

字符串和基本类型数值使用+可以进行拼接:

System.out.println(3+4+"Hello!"); //输出7Hello!,原因是会先进行3+4运算,

System.out.println("Hello!"+3+4);//输出Hello!34

3.5.2 强制类型转换

语法:(targetType)value

将右边类型的值转换成左边类型的值时必须进行强制转换,进行进行强制类型转换时,可能会造成数据精度丢失。

通常情况下,字符串不能直接转换成基本类型,但通过包装类可以实现。

如:

String s = "45";

int iValue = Integer.parseInt(s);

每个基本类都对应一个包装类(首字母大写),包装类提供一个parseXxx(String str)静态方法用于将字符串转换成基本类型。

3.5.3 表达式类型的自动提升

一个算术表达式包含多个基本类型时,整个表达式的数据类型会自动提升,

所有byte,short,char类型自动提升为int

整个算术表达式的数据类型提升为最高等级操作数类型。

3.6 直接量

直接给出的值

3.6.1直接量的类型

基本类型、字符串、null

3.6.2直接量的赋值

直接赋值给相应类型的变量

字符串常量,Java会确保每个字符串常量只有一个,不会产生多个副本

3.7 运算符

算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、类型相关运算符

3.7.1 算术运算符

+、-、*、/、%、++、–

3.7.2 赋值运算符

=

3.7.3 位运算符

3.7.4 扩展后的赋值运算符

+=,-=,…

3.7.5 比较运算符

>, >=,==,<=,<,!=

==比较两个引用变量时,只有两个引用指向同一个对象时才为true。

3.7.6 逻辑运算符

&&

&(不短路与)

||

|(不短路或)

!

^(异或)

3.7.7三目运算符

(expression) ? if-true-statement : if-false-statement;

对expression求值,如果true,返回f-true-statement,如果false,返回if-false-statement;

3.7.8 运算符的结合性和优先级

大部分从左向右

优先级表不需要背!使用()控制执行顺序。

附录 本章练习

1.定义学生、老师、教室三个类,为三个类编写文档注释,并使用javadoc工具生成API文档。

/**
 * Description:
 * doc测试
 * @author pigeon
 * @version 0.1
 */
public class Testdoc{
/**
 * Description:
 * 学生类
 */
protected class Student{
    /**
     * 成员变量
     */
    protected int age;
    protected String name;
    /**
     * Student构造器
     * @param age,年龄 
     * @param name,姓名
     */
    protected Student(int age,String name){
        this.age = age;
        this.name = name;
    }

}

protected class Teacher{
    /**
     * 成员变量
     */
    protected int age;
    protected String name;
}

protected class Classroom{
    protected int number;
    protected boolean Empty = true;
    /**
     * 查看教室是否为空
     * @return Empty 返回是否为空
     */
    protected boolean isEmpty(){
        return Empty;
    }
}
}

使用javadoc生成API文档:

javadoc -d apidoc -windowtitle 测试 -doctitle 学生、老师、教室的API文档 Testdoc.java

2.使用8种基本数据类型声明多个变量,并用不同方式为8种基本类型的变量赋值,熟悉每种类型的赋值规则和表示方式。

public class Test2{
    public static void main(String[] args){
        System.out.println("Hello");
        byte bt = 1;
        short st = 12;
        int it = 123;
        long lt = 1234;
        char c = 'A';
        System.out.print(c);
        float ft = 1.12f;
        double dt = 3.14159;
        boolean b = true;
    }
}

3.在数值型的变量之间进行类型转换,包括低位向高位的自动转换,高位向低位的强制转换。

public class Test3{
    public static void main(String[] args){
        int it = 123456;
        long lt  = it;//自动转换
        double dt = 2.13;
        float ft = (float)dt;//强制转换
        System.out.println("Ok");
    }
}

4.使用数学运算符、逻辑运算符编写40个表达式,先自行计算各表达式的值,然后通过程序输出进行对比。

//40个太多了,就写了几个
public class Test4{
    public static void main(String[] args){
        int i1,i2;
        i1=1;i2=2;
        System.out.println("i1+i2="+(i1+i2));
        System.out.println("i1-i2="+(i1-i2));
        System.out.println("i1*i2="+(i1*i2));
        System.out.println("i1/i2="+(i1/i2));
        double d1= 1.1;double d2 = 1.2;
        System.out.println("d1+d2="+(d1+d2));
        System.out.println("d1-d2="+(d1-d2));
        System.out.println("d1*d2="+(d1*d2));
        System.out.println("d1/d2="+(d1/d2));
        
    }
}


相关文章
|
7天前
|
前端开发 Java 图形学
[笔记] 疯狂JAVA讲义(第3版)第11章 AWT编程
[笔记] 疯狂JAVA讲义(第3版)第11章 AWT编程
|
1天前
|
Java
杨老师课堂_Java教程第六篇之引用数据类型_类的运用
杨老师课堂_Java教程第六篇之引用数据类型_类的运用
5 1
|
7天前
|
Java 索引
[笔记] 疯狂JAVA讲义(第3版)第4章 流程控制与数组
[笔记] 疯狂JAVA讲义(第3版)第4章 流程控制与数组
|
7天前
|
算法 Java 索引
12.12_黑马数据结构与算法笔记Java
12.12_黑马数据结构与算法笔记Java
18 1
|
1天前
|
Java
杨老师课堂_Java教程第二篇之变量及运算符
杨老师课堂_Java教程第二篇之变量及运算符
3 0
|
7天前
|
数据可视化 Java 测试技术
[笔记] 疯狂JAVA讲义(第3版) 第2章 理解面向对象
[笔记] 疯狂JAVA讲义(第3版) 第2章 理解面向对象
|
7天前
|
IDE Oracle Java
[笔记] 疯狂JAVA讲义(第3版) 第1章 Java语言概述与开发环境
[笔记] 疯狂JAVA讲义(第3版) 第1章 Java语言概述与开发环境
|
7天前
|
存储 设计模式 前端开发
[笔记] 疯狂JAVA讲义(第3版)第12章 Swing编程
[笔记] 疯狂JAVA讲义(第3版)第12章 Swing编程
|
7天前
|
Java 编译器
[笔记] 疯狂JAVA讲义(第3版)第10章 异常处理
[笔记] 疯狂JAVA讲义(第3版)第10章 异常处理
|
7天前
|
Java 编译器
[笔记] 疯狂JAVA讲义(第3版)第9章 泛型
[笔记] 疯狂JAVA讲义(第3版)第9章 泛型