?> 开yun体育官网入口登录体育 四类:整型、浮点型、字符型以及布尔型_🚁开yun(kaiyun)体育app入口登录(中国)官方网站平台

开yun体育官网入口登录体育 四类:整型、浮点型、字符型以及布尔型

[id_[id_1[id_[id_180382916]45422653]6[id_29[id_522347568]54439]528114]746904441]id_1020048947]

[id_1489641307]

Java里的数据类型大体上可以分成两种:一种是一般的类型,另一种是指向对象的类型

基本数据类型有四类八种:

四类:整型、浮点型、字符型以及布尔型八种:如下

image.png

类型提升

image.png

包装类

image.png

运算符

基本运算方式包括加法、减法、乘法、除法以及取余运算,分别对应符号为加号、减号、星号、斜杠和百分号

注意事项

都是二元运算符,使用时必须要有左右两个操作数

做除法和取模时,右操作数不能为0

% 能够对整数执行取余操作,同时也能对浮点数实施取余,不过这种用法通常没有实际作用,绝大多数情况下都是针对整数进行取余的

两侧操作数类型不一致时,向类型大的提升

增量运算符( += -= *= %= )

该种类型运算符操作完成后,会将操纵的结果赋值给左操作数。

只有变量才能使用该运算符,常量不能使用

关系运算符 ( == , != , < , > , = )

计算结果是 true 或者 false

注意:当需要多次判断时,不能连着写开yun体育官网入口登录体育,比如:3 < a < 5

逻辑运算符 ( && , || ,! )

逻辑与 &&

image.png

逻辑或 ||

image.png

逻辑非 !

image.png

短路求值

&& 和 || 遵守短路求值的规则

当 && 的左侧部分判定为不成立时, 结果就确定为不成立, 不必再去评估右侧部分.

当 || 出现时, 若其左边的式子算出来是肯定成立, 那么整个式子就确定为成立, 右边的式子就不用再去算它了。

& 和 | 在表达式结果为布尔值的情况下, 同样执行逻辑运算, 不过, 它们不同于 && 和 ||, 无法进行短路计算, 总是会计算两边的内容

位运算符

按位与操作开yun体育app官方下载入口,当两个二进制位都取值为 1,输出结果就是 1,只要有一个不是 1,结果就变成 0。

位或运算符,当两个二进制位都为零时,运算结果就是零,只要有一个二进制位不为零,运算结果就是一

注意:当 & 与 | 的参数为整数类型时,执行位运算,若参数为布尔值时,则进行逻辑运算

位值翻转 ~: 遇到零就变成一, 遇到一就变成零

按位异或运算符的功能是, 当两个数字的二进制表示中某一位的值一样时, 那么结果的该位就置为 0, 而当两个数字的二进制表示中某一位的值不一样时, 结果的该位就置为 1

移位运算 > >>>

删除最右边的位置, 在最左边增加标记位, 如果是正数则标记位为0, 如果是负数则标记位为1

无符号右移 >>>: 最右侧位不要了, 最左侧补 0

都是二元运算符,且都是按照二进制比特位来运算的

条件运算符

表达式1 ? 表达式2 : 表达式3

若 第一个式子成立, 那么整体式子结果就是第二个式子的值,

若 第一个式子结果为假, 那么全部式子结果便是第三个式子结果

分支与循环 分支结构

if 语句

switch 语句

循环结构

while 循环

for 循环

do while 循环

注意:break , continue 的用法

方法

/ 方法定义
限定词 结果种类 函数称号([变量种类 参数名 ...]),
  方法体代码;
  return 返回值;
}

实参和形参的关系

方法重载

方法签名

递归

数组 数组的创建

T 数组名 = new T;

T:表示数组中存放元素的类型 如:int 、double

T代表数据集合的性质,例如int为整数构成的序列,double为小数组成的链表

N:表示数组的长度 如:5表示存放5个对应类型的元素

动态初始化 以及 静态初始化

初始化数组时,无需事先确定元素数量,可以直接赋值具体内容

int[] arr1=new int []{0,1,2,3,4,5,6,7,8,9};

也可以将new T去掉,简写为:

int[] arr1={0,1,2,3,4,5,6,7,8,9};

动态初始化:在创建数组时,直接指定数组中元素的个数

int[] arr1=new int [10]; //创建一个可以容纳10个int类型元素的数组

动态初始化跟静态初始化不一样,它能够继续往数组里加东西,比如用int arr=new int;这种方式来说明

int[] arr=new int[5];
arr[0]=1;
arr[1]=2;
arr[2]=3;
arr[3]=4;
arr[4]=5;

静态和动态初始化也可以分为两步。

int[] array2;
array2 = new int[]{10, 20, 30}; //静态
int[] array1;
array1 = new int[10]; //动态

如果没有对数组进行初始化,数组中元素有其默认值:

image.png

如果数组中存储元素类型为引用类型,默认值为null

for each

for(元素类型t 元素变量x : 遍历对象obj){ 
     引用了x的java语句; 
} 

for-each 是一种循环的变体形式,能够更加便捷地实现数组元素的逐一访问,可以防止在常规循环中错误地编写循环判断条件以及变量更新表达式。

举例使用(打印数组内元素):

public class Test1 {
    public static void main(String[] args) {
        int[] arr={1,2,3,4,5,6,7,8,9,10};
        for(int x:arr){
            System.out.println(x);
        }
    }
}

image.png

内存分布

image.png

类 类的定义格式

在java中创建类时必须使用 **class **标识,详细规则如下:

class ClassName {    // 创建类 
field;               // 字段(属性) 或者 成员变量 
method;              // 行为 或者 成员方法
}    

通常一个文件里仅能声明一个类,包含main方法启动的类需要用public修饰,因为开发环境会优先在public类中搜索main方法,public类的名称必须与文件名一致,不建议随意更改,若需修改,应借助开发工具完成,向他人展示时可以这样做。

创建了一个类别,便等于在数字设备中设定了一种全新构造, 以此类构造生成个体单元的行为,被称作类别的具体化, 在java语言里,借助new指令,与类别名称相结合,能够完成个体单元的生成。

public class Main{
    public static void main(String[] args) {
        
        PetDog dogh = new PetDog(); //通过new实例化对象
        //此时未赋值,其值为默认值,即0 、null
        dogh.name = "阿黄";
        dogh.color = "黑黄";
        dogh.barks();
        dogh.wag();
        
        PetDog dogs = new PetDog();
        dogs.name = "阿黄";
        dogs.color = "黑黄";
        dogs.barks();
        dogs.wag();
    }
}

image.png

this引用

image.png

image.png

输出结果全为0,原因是局部变量year覆盖了实例属性year,赋值操作只影响局部变量,实例属性未被改变,因此输出的是默认值。

应写为:

image.png

构造方法

class类中的构造方法也可以使用方法重载

image.png

创建实例时,系统会自动执行一种特殊的方法,它的名称需与所属类保持一致,这种特殊方法称作生成器函数,对象从诞生到消亡期间,该函数仅被触发一次

注意:

构造函数必须与类名一致且不带返回值类型,既不能设为void,在实例化对象时由编译器自动执行,并且在整个对象存在期间仅调用一次,如同人一生只能出生一次,构造方法支持重载功能,允许用户根据实际需要提供多种参数的构造函数,体现了封装思想

对象导向编程的三个主要特征是:封装、继承、多态性。在类和对象这一阶段,重点探讨的是封装这一特性。所谓封装,通俗地讲,就是用外壳隐藏内部细节

以上文代码为例:

class PetDog{
    private String name;
    public String color;
    public String getName(){ 
        return this.name;
    }
    public void setName(String s){
        this.name=s;
    }
    public void barks(){
        System.out.println("汪汪叫");
    }
    public void barks(String s){
        System.out.println(s+"汪汪叫");
    }
}
public class Test1 {
    public static void main(String[] args) {
        
        PetDog dogh = new PetDog(); //通过new实例化对象
        //此时未赋值,其值为默认值,即0 、null
这个句子非常复杂,包含了多个层面的意思,而且原文的表达方式比较特殊,需要仔细分析才能理解其核心含义。在改写时,首先要确保不改变专有名词,然后尝试用不同的词汇和句式结构来表达相同的意思,同时保持原文的整体风格。改写后的句子应该更加流畅自然,易于理解,同时也要注意标点符号的使用,确保句子结构完整。下面是改写后的结果:这个陈述非常详尽,涉及了多个方面的内容,而且原文的表述方式比较独特,需要深入解读才能把握其主旨。在重新组织时,必须保证专有名词不变,然后努力用不同的词语和句子构造来传达同样的信息,同时维持原文的整体风格。改写后的句子应该更加顺畅自然,让人容易明白,同时也要注意标点符号的运用,确保句子结构完整。
        dogh.setName("阿黄");//使用方法间接赋值
    }
}

image.png

封装扩展之包 导入包中的类

Java 已经内置了大量可复用的类,方便调用。比如 Date 类,通过导入 java.util 包,就能获取该包中的 Date 类。

导入包

import java.util.Arrays;
import java.util.Date;
import java.util.*;  这四个特殊牌,在游戏中等同于万能牌,编程时输入Scanner关键字,就意味着导入了java.util.Scanner这个类
                     将日期导入包命名为Date,使用该名称来代表日期类,以便在程序中进行调用和管理,同时确保与其他类名不产生冲突,保持代码的清晰性和可读性。

但也仍需注意:

屏幕截图 2023-04-25 201648.png

能够运用 import static 语句来调用库里的静态函数和属性。

屏幕截图 2023-04-25 203304.png

常见的包

Java基础类库包含系统常用类如String和Object,自JDK1.1版本起会自动载入。Java反射编程相关功能集中在reflect包中。网络编程开发工作可借助net包实现。数据库开发的相关支持由sql包提供。Java工具类集合在util包里。集合类等极具关键作用,6. java.io是处理输入输出的编程工具包,static用于限定成员属性

静态成员变量,通过static关键字修饰,其本质为静态成员变量,这类成员变量最显著的特点在于,它并不归属于某个特定的对象,而是作为所有对象共同拥有的资源存在。

image.png

而普通成员访问:

image.png

也就是说:非静态成员变量不依赖于对象

image.png

【静态方法特性】

它不是某个特定实例的属性,属于类别本身的方法,既能在对象上使用,也能通过类名直接调用,更提倡采用后者形式开yun体育app入口登录,静态函数无法接触任何非静态字段,静态函数之中不允许调用非静态函数,由于非静态函数带有this参数,在静态函数中调用时没法提供this参数,代码区概念及其类型

使用 {} 定义的一段代码称为代码块。

根据代码块定义的位置以及关键字,又可分为以下四种:

普通代码块

构造块

静态块

同步代码块(后续讲解多线程部分再谈

普通代码块

image.png

构造代码块

定义在类内部的代码片段,没有附加任何限定词。这个代码片段也称作:对象代码片段。通常情况下,此类代码片段用于对实例中的成员变量进行初始设定

image.png

静态代码块

image.png

运行次序:静态初始化语句 > 对象初始化语句 > 无参构造函数

如打印两组,则静态代码块只执行一次。

如果都是静态代码块,则由定义顺序决定执行顺序

继承

而程序中的继承与其相似:

image.png

image.png

子类从父类中获取,父类中定义的方法和变量,静态部分是无法获得的。

image.png

image.png

image.png

在子类函数里,能够访问父类的属性与行为,但仅限于非固定的函数里,构造函数除外。

image.png

如果没有显式定义构造函数,编译器会自动生成一个无参的构造函数,并且不会产生错误,具体表现为:

image.png

如果父类明确声明了不带参数或者默认的构造函数,那么在子类的构造函数开始位置会自动包含一个对基类构造函数的隐式调用,即super()

造方法

当父级构造函数需要参数时,子级就必须明确编写构造函数,并在子级构造函数中指定合适的

父类初始化必须执行,否则编译不通过。子类构造方法里,通过super(…)调用父类构造时,必须是子类构造函数的第一行代码。super(…)在子类构造方法中只能出现一次,并且不能和this同时使用 this与super的差异

相同点:

**1. 都是Java中的关键字

仅限于类的实例方法中使用,用以访问非实例成员方法与字段在构造函数内调用时,必须是构造函数内的首条语句,并且不允许共存**

不同点:

这个指针指向正在使用的实例,正在使用的实例就是那个去调用实例方法的对象,那个超词相当于子类对象里从父类那里接收过来的成员的指针

在非静态成员方法里,this用于调用本类的方法和属性,super用于调用父类继承下来的方法和属性,这两种调用方式不能同时出现在构造方法中,this(…)用于调用本类构造方法,而super(…)用于调用父类构造方法,这两种调用方式在构造方法中不能同时出现,构造方法中一定会存在super(…)的调用,如果用户没有写,编译器也会自动添加,但是this(…)如果用户没有写,则不会存在

image.png

继承方式

当一个类别不希望被其他类派生出来时,可以采取特定措施,![image.png](https://cdn.nlark.com/yuque/0/2023/png/34583342/1683458221606-e2420ed9-6f19-450c-ab9d-092194a14cb7.png#averageHue=%23fcfbfa&clientId=uc57f53f0-889d-4&from=paste&height=159&id=u3c58ad0e&originHeight=218&originHeight=218&originWidth=1202&originalType=binary&ratio=1.375&rotation=0&showTitle=false&size=97304&status=done&style=none&taskId=u45d71e1d-27dd-43a7-bf66-5053d5f92a7&title=&width=874.1818181818181)![image.png](https://cdn.nlark.com/yuque/0/2023/png/34583342/1683458994857-e0c0ecf7-770c-4fbe-a84f-2007b5a09786.png#averageHue=%23b7b5b3&clientId=uc57f53f0-889d-4&from=paste&height=231&id=u4df34fbe&originHeight=317&originHeight=317&originWidth=885&originalType=binary&ratio=1.375&rotation=0&showTitle=false&size=45656&status=done&style=none&taskId=u37746d84-6250-4fbf-ac9f-a003b57ab11&title=&width=643.6363636363636) 这样一来,其他类就无法从这个类别中获取任何继承特性,

多态

简单来讲,事物有多种表现方式,详细来说,就是去实施某个动作,当不同的主体去实施时会产生出不同的情形。例如:狗和猫都进行进食这个动作,但情形不同,即吃的食物和进食的途径不一样。

image.png

抽象类

类名由 abstract 修饰

abstract class Animal{
}

抽象方法,由 abstract 修饰,可以没有具体的实现

abstract class Animal{
    public abstract void F();
}

采用抽象方法的一定属于抽象类,类名必须加上 abstract 修饰

抽象类中可以有 普通成员 和 普通方法

抽象类中也可以包含构造方法

抽象类不能被实例化

image.png

继承抽象类时不可随意进行,一旦某个类与抽象类产生继承关系,就必须将其方法进行重新编写

image.png

image.png

抽象类的用处:被继承

当一个抽象类被常规类接收时,这个常规类需要重新编写抽象类里所有未实现的方法,

final 不能修饰 abstract 修饰的方法

image.png

private 不能修饰 abstract 修饰的方法

image.png

匿名对象,每次使用都要重新实例化

定义一个接口,由 interface 修饰

image.png

接口中的方法是不能在接口中实现的,只能由实现接口的类来实现

接口里的成员变量原本就是公开的,并且是恒定不变的,属于整个类别共享的属性

接口中的方法默认时 public abstract

image.png

final 修饰 a 后,a 的值不能修改

只要没有特别注明** default**,接口里面就不可以包含常规方法,一旦编写了常规方法,它们就会自动变成抽象方法

image.png

接口里的方法,假如是用** static** 关键字声明的,那么它就能够定义在接口内部

image.png

接口不能通过关键字实例化

image.png

接口和类之间能够借助** 实现功能 **来达成,需要重新编写接口里所有的方法(static修饰的部分不需要变动)

重写接口中方法时,不能使用默认的访问权限

public interface USB {
  void openDevice(); // 默认是public的
  void closeDevice(); // 默认是public的
}
public class Mouse implements USB {
@Override
  void openDevice() {  //应加上public
    System.out.println("打开鼠标");
  }
// ...
}
编写USB设备打开函数时,若遇到编译问题,则不能采用无特殊指明权限的访问级别
正在探寻给予更有限的使用权, 以前是公开的, 这样难以实现子类权限超越父类

**接口中不能有静态代码块和构造方法 **

接口并非属于类,不过,接口在经过编译之后,其生成的字节码文件,同样以.class作为后缀名

一个接口也可以产生独立的字节码文件

如果类没有实现接口中的所有的抽象方法,则类必须设置为抽象类

接口也可以发生 向上转型 和 动态绑定

关键词:

客户评论

  1. 2K电影网
    2025-09-25 01:39:29 留言:
    楼上的别说的那么悲观好吧!https://www.2kdy.com/

我要评论