首页 > 编程语言 >Java基础学习(二)

Java基础学习(二)

时间:2025-01-07 16:12:00浏览次数:8  
标签:运算符 Java 变量 int 基础 学习 println 类型 out

Java基础知识(二):基础语法

本文为个人学习记录,内容学习自 狂神说Java


注释

  1. 单行注释(Line comment)

    // 这是单行注释
    
  2. 多行注释(Block comment)

    /*
    这是多行注释
     */
    
  3. 文档注释(JavaDoc)

    /**
     * @Description HelloWorld
     * @Author victoria
     */
    

    注意:文档注释不同于多行注释,其中的@+参数有其意义,可以用于JavaDoc生成对应的文档


关键字

常用关键字:

abstract assert boolean break byte
case catch char class const
continue default do double else
enum extends final finally float
for goto if implenments import
instanceof int interface long native
new package private protected public
return strictfp short static super
switch synchronized this throw throws
transient try void volatile while

标识符

类名、变量名、方法名都被称为标识符

标识符注意点:

  • 所有的标识符都应以字母(A-Z或者a-z)、美元符($)、下划线(_)开始
  • 不能使用关键字
  • 标识符严格区分大小写

数据类型

基本定义

Java 的数据类型分成两大类:基本类型(primitive type)和 引用类型(reference type)

图2-1

八大基本数据类型:byte、short、int、long、float、double、char、boolean,不包括String

在 Java 中若没有显式地指定整数类型,默认是int型;若没有显式地指定浮点数类型,默认是double型

byte num1 = 10;
short num2 = 20;
int num3 = 30;              // int类型是最常用的整数类型
long num4 = 40L;            // long类型要在数字后面加个l或者L,但使用l易与1混淆,因此最好用L
float num5 = 50.1f;         // float类型要在数字后面加个f或者F
double num6 = 3.1415;
char name1 = 'A';
String name2 = "victoria";  // 注意两点:1.String不是关键字,是类;2.Java严格区分单引号和双引号,String应用双引号
boolean flag = true;

拓展内容

整数与进制:

  • 十进制
  • 二进制:以 0b 开头
  • 八进制:以 0 开头
  • 十六进制:以 0x 开头

浮点数的舍入误差:计算机采用二进制编码,而二进制无法准确表示所有的小数,会存在舍入误差,尽量避免使用浮点数进行数值比较

常用转义字符:

转义字符 含义
\t 水平制表符
\n 换行,将当前位置移到下一行开头
\r 回车,将当前位置移到本行开头
\\ 代表一个反斜杠
\0 空字符(NULL)

类型转换

  1. 优先级:

    低  ------------------------------------------->  高
    byte, short, char -> int -> long -> float -> double
    
  2. 类型转换分成 强制类型转换自动类型转换

    • 强制类型转换:将高优先级的变量赋值给低优先级的变量时,需要强制类型转换,格式:(类型)变量名
    • 自动类型转换:将低优先级的变量赋值给高优先级的变量时,无需手动进行转换
    int i = 100;
    byte j = (byte)i;       // 优先级从高到低,需要强制类型转换
    double k = i;           // 优先级从低到高,无需手动类型转换
    
  3. 自动类型提升:

    当byte、short和char参与运算时,由于本身范围比较小,为了避免数据溢出会自动提升为int类型再参与运算,因此有如下规则:

    ① 当参与运算的数据类型为byte、short、char时,输出的数据类型为int(例如byte + short -> int)

    ② 当参与运算的数据类型有更高级别的类型时,输出的数据类型为最高级别的类型(例如int + long -> long)

  4. 类型转换中的数据溢出问题:

    int money = 1000000000;
    int years = 20;
    long total = money * years;		// 乘法结果超出了int类型的范围,虽然在long类型的范围之内
    System.out.println(total);		// 但是输出结果仍为-1474836480,这是因为乘法之后仍是int类型,赋值前就发生了数据溢出
    

变量

变量的分类和作用域

  • 类变量
  • 实例变量
  • 局部变量
public class demo {
    // 属性
    static double salary;    		// 类变量:从属于类,如果不初始化则为默认值,必须用static关键字修饰
    String name;        			// 实例变量:从属于对象,如果不初始化则为默认值
    								// 默认值:数值型变量默认值为0,布尔值变量默认为false,其余所有类型默认值均为null
    // main方法
    public static void main(String[] args) {
        int i = 10;     			// 局部变量:必须声明和初始化值,作用域仅为当前代码块内
    }
}

类变量和实例变量的区别:二者的从属不同,根据下面的例子辅助理解:

public class demo1 {
    // 属性
    static double salary;       	// 类变量:从属于类
    String name;                	// 实例变量:从属于对象
    // main方法
    public static void main(String[] args) {
        System.out.println(salary);	// 类变量能够在类的方法内直接被使用,此处可以正常输出
        System.out.println(name);	// 实例变量从属于对象,必须先声明对象后才能被使用,此处会报错
    }
}

注意事项

  1. Java 是一种强类型语言,每个变量都必须声明其类型;
  2. 变量是程序中最基本的存储单元,其要素包括变量名、变量类型和作用域;
  3. 可以使用逗号隔开来声明多个同类型的变量

常量

常量的定义:使用final关键字修饰

final double PI = 3.14;

命名规范

  • 变量:首字母小写 + 驼峰原则
  • 常量:大写字母 + 下划线
  • 类名:首字母大写 + 驼峰原则
  • 方法名:首字母小写 + 驼峰原则

运算符

基本定义

  • 算术运算符:+, -, *, /, %, ++, --
  • 赋值运算符:=
  • 关系运算符:>, <, >=, <=, ==, !=, instanceof
  • 逻辑运算符:&&, ||, !
  • 位运算符:&, |, ^, ~, >>, <<, >>>
  • 条件运算符:? :
  • 扩展赋值运算符:+=, -=, *=, /=

注意事项

  1. 整数除法

    int a = 5;
    int b = 20;
    System.out.println(a/b);		// 输出为 0
    
  2. 自增、自减运算(需要注意a也会被改变)

    int a = 3;
    int b = a++;
    int c = ++a;
    System.out.println(a);			// 输出为 5
    System.out.println(b);			// 输出为 3
    System.out.println(c);			// 输出为 5
    
  3. 短路运算

    int a = 5;
    boolean b = (a<4) && (a++<4);	// 由于 && 运算符需要同时为真才为真,(a<4)为false,则之后的(a++<4)将不会被计算
    System.out.println(a);			// 输出为 5
    
  4. 在 Java 中,只有布尔类型能参与逻辑运算符的运算,它不像 C 和 Python 会将零值视为false、非零值视为true

    int a = 5;
    boolean b = false;
    boolean c = a && b;				// 报错:运算符'&&'不能应用于'int'、'boolean'
    
  5. 左移运算符<< 和 右移运算符>>

    System.out.println(2<<3);		// 2左移3位,输出为16,左移1位等价于*2
    System.out.println(16>>3);		// 16右移3位,输出为2,右移1位等价于/2
    

    注意:由于位运算符直接作用在二进制位上,效率很高,因此可以采用左移和右移来高效实现乘法和除法

  6. 使用 + 运算时,若操作数中包含 String 类型,则会将另一个操作数自动转换成 String 类型,然后进行拼接

    int a = 10;
    int b = 20;
    System.out.println(""+a+b);		// 输出为 1020
    System.out.println(a+b+"");		// 输出为 30
    
  7. 条件运算符

    x ? y : z						// 如果x为真,则结果为y,否则结果为z
    

包机制

  • 为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间
  • 一般利用公司域名倒置作为包名,例如 com.baidu.www

生成包

图2-2

在生成的包中新建 java 文件,文件开始会自带包名,这是IDEA帮我们自动生成的,该语句不可删除并且必须放在开头:

package com.baidu.www;

导入包中的类

  1. 导入单个类:

    import java.util.Date;
    
  2. 导入包下所有的类(* 为通配符):

    import java.util.*;
    

JavaDoc

文档注释

  • 参数信息

    • @author 作者名
    • @version 版本号
    • @since 指明最早可用的 JDK 版本
    • @param 参数名
    • @return 返回值情况
    • @throws 异常抛出情况
  • 示例:

    /**
     * @author victoria
     * @version 1.0
     * @since 1.8
     */
    

JavaDoc 命令

  • JavaDoc 命令用于生成自己的API文档

  • 示例:

    javadoc demo.java
    javadoc -encoding UTF-8 -charset UTF-8 demo.java		// 能够正常显示中文
    

    图2-3

标签:运算符,Java,变量,int,基础,学习,println,类型,out
From: https://www.cnblogs.com/victoria6013/p/18657848

相关文章

  • Java基础学习(一)
    Java基础学习(一):入门知识本文为个人学习记录,内容学习自狂神说JavaJava三大版本JavaSE:标准版,主要用于桌面程序和控制台程序开发JavaME:微缩版,主要用于嵌入式开发JavaEE:企业版,主要用于Web端和服务器开发Java相关缩写词JDK:JavaDevelopmentKit,Java开发工具JRE:JavaRu......
  • 学霸带你游戏化学习技巧激发你的好奇心和创造力
    激发好奇心的学习策略好奇心是推动学习的重要动力,能够帮助学生跨越学习中的困境,深入探索未知领域。培养好奇心不仅能够提升学习效率,还能让学习过程变得更加有趣和富有成效。在面对繁重的学业任务时,借助多样的学习策略和工具,我们可以激发和维持持续的兴趣,促使思维更广阔、更灵......
  • 前端基础知识了解
    前端开发的三要素前端开发的三要素通常指的是HTML、CSS和JavaScript。 HTML(超文本标记语言):HTML是构建网页内容的基础,它使用标签来定义网页的结构和内容,如文本、图像、链接、表格等。例如,<p>标签用于定义段落,<img>标签用于插入图像。 CSS(层叠样式表):CSS用于控制网页的样式......
  • java进行图片压缩
    图片压缩添加依赖<dependency><groupId>com.siashan</groupId><artifactId>toolkit-image</artifactId><version>1.1.9</version></dependency>使用Thumbnails来进行图片压缩publicstaticvoidcompressImage(Stringp......
  • 快节奏行业如何高效管理项目?这些方值得学习
    一、快节奏行业中的项目管理现状与挑战快节奏行业通常包括科技、互联网、金融、媒体等领域,这些行业的特点是变化快、竞争激烈、客户需求多样化。在这样的环境中,项目管理不仅需要关注传统的范围、时间和成本,还需要具备高度的灵活性和应变能力。传统的管理方法在这种环境下往往难以......
  • 解决 Spring Boot 启动错误问题:elasticsearch-java 8.17.0 报 elasticsearch-rest-cli
    解决SpringBoot启动错误问题:Thefollowingmethoddidnotexistorg.elasticsearch.client.RequestOptions$Builder.setHttpAsyncResponseConsumerFactory异常分析与解决方案在使用SpringBoot应用时,可能会遇到以下启动错误:***************************APPLICATIONF......
  • Java程序基础⑥Java类和对象+封装
    目录1.面向对象的概念2.类的定义和使用2.1类的概念2.2类的定义格式2.3类的实例化3.this引用3.1this引用的意义3.2this的特性4.构造方法4.1构造方法的概念4.2构造方法的性质4.3成员变量初始化4.4构造方法快速创建5.封装5.1封装的概念5.2 封装的......
  • 【Docker基础】Docker Desktop超详细入门使用指南
    前言大家好,我是小徐啊。今天介绍下什么是DockerDesktop以及如何使用。docker是一个帮助我们进行容器化部署的应用,但一开始,它只有命令界面,对于不太习惯使用命令的小伙伴比较难上手。所以,后来官方就出了一个可视化的软件DockerDesktop,帮助我们简单直观的使用docker,让我们可以轻松......
  • Golang基础-值类型、引用类型区别
    在Go语言中,引用类型和值类型是两种不同的数据类型,它们在内存中的存储和传递方式有很大的区别。理解这两者的定义和适用场景对有效地编写Go代码至关重要。1.值类型(ValueTypes)定义值类型是指变量直接保存数据的副本。当你将一个值类型的变量赋值给另一个变量时,实际上是......
  • java2实用教程第六版习题答案 第4章
    第4章一.判断题1.√    2.√   3.√    4.× (实例方法不能被类名调用。实例方法可被类创建的任何对象调用,类名调用类方法)  5.√    6.√    7.√   8.√  9.×  (是可以的,只不过成员变量会暂时失效)  10.×(也可以重载)......