[笔记] 疯狂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));
        
    }
}


相关文章
|
1月前
|
存储 Java Go
【Java】(3)8种基本数据类型的分析、数据类型转换规则、转义字符的列举
牢记类型转换规则在脑海中将编译和运行两个阶段分开,这是两个不同的阶段,不要弄混!
172 2
|
1月前
|
Java Go 开发工具
【Java】(4)五种运算符的说明(&&、||、>=、>、<=、<)、4种控制语句(if、for、while、dowhile)、输入和输出说明
扩展类的赋值运算符不改变运算结果类型,假设最初这个变量的的类型byte类型,无论怎么进行加或追减,最终该变量的数据类型还是byte类型。注:一个表达式中有多个运算符,运算符有优先级,不确定的加小括号,优先级得到提升。当布尔表达式的结果是false的时候,选择表达式2作为整个表达式的执行结果。当布尔表达式的结果是true的时候,选择表达式1作为整个表达式的执行结果。当用户输入的时候,并且最终敲回车键的时候,键入的信息会自动赋值给a。并且,连接运算之后的结果还是一个字符串类型。表达式1 : 表达式2。
110 1
|
1月前
|
Java Go 开发工具
【Java】(2)Java数据类型阐述、基本数据类型的占用和范围、二进制的讲述
数据的一种表示形式。十进制表示满十进一原则。二进制表示满二进一原则。例如:十进制例如:二进制计算机在任何情况下都只能识别二进制。
97 0
|
2月前
|
安全 Java
使用Java多态性进行数据类型转换
以上示范了如何通过多态性来执行安全有效地对于Java对象间相互之间进行正确方式与场合下正确格式与条件限定内对于各个层级关系内部成员及其功能调取与应有操作处理过程,并通过 `instanceof`关键字确保了程序运行期间遵循逻辑合理并符合预设规则条件限定内正常工作流程而无需担忧潜藏风险问题出现可能带来影响结果质量问题情况存在可能。
103 12
|
8月前
|
存储 Java
# 【Java全栈学习笔记-U1-day02】变量+数据类型+运算符
本篇笔记主要围绕Java全栈学习的第二天内容展开,涵盖了变量、数据类型、运算符以及Scanner类的应用。首先介绍了变量的概念与命名规范,以及如何定义和使用变量;接着详细讲解了Java中的基本数据类型,包括整型、浮点型、字符型、布尔型等,并通过实例演示了数据类型的运用。随后,深入探讨了各类运算符(赋值、算术、关系、逻辑)及其优先级,帮助理解表达式的构成。最后,介绍了如何利用Scanner类实现用户输入功能,并通过多个综合示例(如计算圆面积、购物打折、变量交换及银行利息计算)巩固所学知识。完成相关作业将进一步加深对这些基础概念的理解与实践能力。
141 13
|
3月前
|
存储 缓存 算法
Java数据类型与运算符深度解析
本文深入解析Java中容易混淆的基础知识,包括八大基本数据类型(如int、Integer)、自动装箱与拆箱机制,以及运算符(如&与&&)的使用区别。通过代码示例剖析内存布局、取值范围及常见陷阱,帮助开发者写出更高效、健壮的代码,并附有面试高频问题解析,夯实基础。
|
4月前
|
存储 人工智能 JavaScript
Java中的数据类型转换
本文介绍了 Java 中常见的数据类型转换方法,涵盖字符串与整型、长整型、浮点型、布尔型及日期类型的相互转换,并讲解了可能出现的异常和处理方式。
214 0
|
5月前
|
人工智能 Java
Java运算符中的隐式转换
本文介绍了 Java 运算符中的隐式类型转换规则,涵盖算数、逻辑、位、关系、赋值及其他运算符。重点分析了算数和位运算符在处理小于 int 位长的数据时会自动转换为 int 类型的特性,并通过代码示例说明可能引发的类型不匹配错误。逻辑、关系、赋值及其他运算符则不涉及类型转换。总结指出,部分运算符在计算时会将小位长数据隐式转为 int 类型,结果也为 int。
|
5月前
|
人工智能 Rust Java
Java中的算数、关系、逻辑、条件、赋值 五大运算符详解
本文介绍了Java中的运算符及其优先级,包括算数运算符(如+、-、*、/、%、++、--)、关系运算符(如&lt;、&gt;、==、!=)、逻辑运算符(如&&、||、!)、条件运算符(三目运算符)和赋值运算符(如=、+=、-=等)。详细解释了每种运算符的功能与用法,例如自增自减运算符的特点、逻辑运算符的短路法运算以及位运算符的操作规则。最后还提供了运算符优先级表格,帮助开发者理解复杂表达式的计算顺序。文中提醒,在实际开发中,建议使用括号明确运算顺序以提高代码可读性。
257 0
|
8月前
|
Java
课时14:Java数据类型划分(初见String类)
课时14介绍Java数据类型,重点初见String类。通过三个范例讲解:观察String型变量、&quot;+&quot;操作符的使用问题及转义字符的应用。String不是基本数据类型而是引用类型,但使用方式类似基本类型。课程涵盖字符串连接、数学运算与字符串混合使用时的注意事项以及常用转义字符的用法。
224 9