<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[饮冰室]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wangxiaochaun</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wangxiaochaun]]></copyright><item><title><![CDATA[【Java25】内部类]]></title><link>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140682080</link><guid>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140682080</guid><author>wangxiaochaun</author><pubDate>Thu, 25 Jul 2024 10:06:06 +0800</pubDate><description><![CDATA[把一个类定义在另一个类内部，就是内部类（也叫嵌套类）。包含内部类的类称为外部类（也叫宿主类）。大部分情况下，把内部类看成是成员内部类，也就是和成员变量、成员方法、构造器、初始化块类似的东西（想一想能够放在Java类内部的五种东西）。因此，成员内部类也就有两种：static修饰的“类内部类”（太拗口了，所以还是遵循传统叫静态内部类，或者就直接叫static修饰的成员内部类）和普通内部类。除此之外，成员内部类做为外部类的组成部分，具有访问权限，即publicprivateprotected。]]></description><category></category></item><item><title><![CDATA[【Java24】面向接口编程]]></title><link>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140637736</link><guid>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140637736</guid><author>wangxiaochaun</author><pubDate>Tue, 23 Jul 2024 15:34:54 +0800</pubDate><description><![CDATA[利用接口可以降低程序各模块之间的耦合，从而提高系统的可扩展性和可维护性。]]></description><category></category></item><item><title><![CDATA[【Java23】接口]]></title><link>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140637659</link><guid>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140637659</guid><author>wangxiaochaun</author><pubDate>Tue, 23 Jul 2024 15:33:23 +0800</pubDate><description><![CDATA[抽象类是多个子类抽象出来的模版。如果把这种抽象进行得再彻底一些，就可以提炼出更加特殊的”抽象类“，即。所谓接口，是比抽象类更抽象的东西：它不关心类方法的实现细节，甚至连类内部状态数据也不关心。它只规定类内必须提供某些方法（行为）。可以认为接口是多个相似类的行为的抽象，是某种。，体现了面向对象的特点。由上图可见，接口是比类更抽象的存在。通过使用接口，既可以让相似类之间聚起来（遵循同一个接口），又避免关系过于紧密（继承），从而实现。]]></description><category></category></item><item><title><![CDATA[【Java22】抽象类]]></title><link>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140524078</link><guid>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140524078</guid><author>wangxiaochaun</author><pubDate>Thu, 18 Jul 2024 15:17:19 +0800</pubDate><description><![CDATA[编写类的时候，通常会为这个类定义一些方法，用来描述该类的行为方式，这些方法通常应该有具体的实现代码。但在有些情况下，父类只知道子类应该有什么行为，却不知道子类该如何实现这些行为。例如，父类Shape知道，它的子类应该能够计算周长。但是不同的子类计算周长的方式不同，即Shape类不知道子类该如何实现这个方法。既然这样，那父类干脆不要知道这个行为就好了。但是这样一来，假设一个Shape引用变量Shape a实际上指向的是Shape的子类的实例，那么这个引用变量就无法调用子类的方法了。]]></description><category></category></item><item><title><![CDATA[【Java21】final修饰符]]></title><link>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140496406</link><guid>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140496406</guid><author>wangxiaochaun</author><pubDate>Wed, 17 Jul 2024 15:23:03 +0800</pubDate><description><![CDATA[final可以用来修饰类、变量和方法。类似C++里的const，表示被修饰的类、变量和方法不可改变。finalfinal修饰的变量并不是不能赋值，而是不能被重新赋值。一旦获得初始值之后，就不能修改的意思。final。]]></description><category></category></item><item><title><![CDATA[【Java20】单例类]]></title><link>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140496368</link><guid>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140496368</guid><author>wangxiaochaun</author><pubDate>Wed, 17 Jul 2024 15:22:15 +0800</pubDate><description><![CDATA[系统第一次使用这个类的时候，系统会为该类变量分配内存空间，类变量开始生效，直到该类被卸载，类变量所占空间才会被垃圾回收机制回收。一个类内，可以有5种成员：成员变量、成员方法、构造器、初始化块、内部类（包括接口和枚举）。类变量既可以通过类来访问，也可以通过对象来访问。但后者只是Java允许的，是一种假象，实际上访问的还是类变量。但如果不太像反复创建实例，比如房子里只有一个茶几、游戏只有一个窗口，这时反复创建多个对象就没有太大的实际意义。与类变量类似，类方法也是既可以通过类，也可以通过对象来调用。]]></description><category></category></item><item><title><![CDATA[【Java19】包装类]]></title><link>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140450043</link><guid>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140450043</guid><author>wangxiaochaun</author><pubDate>Mon, 15 Jul 2024 21:47:53 +0800</pubDate><description><![CDATA[早期Java提供的基本类型变量和包装类对象之间的转换比较麻烦。现在大幅简化了，JDK1.5以后提供了自动装箱（autoboxing）和自动拆箱（autounboxing）功能。Java是面向对象的编程语言，但也包含了8种基本数据类型。这8种基本数据类型不支持面向对象的编程机制：没有成员变量、方法可以调用。自动包装和拆装必须注意类型匹配。返回来也可以把包装类的实例”近似“当成基本类型变量使用。把基本类型变量转换为字符串还有一种更简单的方法：将基本类型变量与空字符串。方法用于将基本类型变量转换成字符串。]]></description><category></category></item><item><title><![CDATA[【Java18】初始化块]]></title><link>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140447831</link><guid>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140447831</guid><author>wangxiaochaun</author><pubDate>Mon, 15 Jul 2024 20:08:09 +0800</pubDate><description><![CDATA[和一起，是能在类中出现的成员。staticdefaultstatic虽然但是，同样修饰符的代码块没必要分成一个个小块块。因为代码块就是在创建Java对象的时候隐式执行的，而且总是全部执行。所以分成小块块和合并成一个大块块，没有区别。]]></description><category></category></item><item><title><![CDATA[【Java17】组合]]></title><link>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140389665</link><guid>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140389665</guid><author>wangxiaochaun</author><pubDate>Fri, 12 Jul 2024 22:15:14 +0800</pubDate><description><![CDATA[则在实现代码复用的同时，保留了原本类的封装性。这两者一定程度上是有取舍的。]]></description><category></category></item><item><title><![CDATA[【Java16】多态]]></title><link>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140363540</link><guid>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140363540</guid><author>wangxiaochaun</author><pubDate>Thu, 11 Jul 2024 22:21:17 +0800</pubDate><description><![CDATA[对面向对象语言来说，所有的对象（Object），或者说类的实例，本质上都是引用变量。因此，多态最主要就是针对对象来说的：声明时引用变量指向的对象的类型，和运行时引用变量指向的对象的类型不一致。即其编译时类型是父类类型，运行时类型是子类类型。那么也可以反过来，执行。引用变量在编译阶段只能调用其编译时类型拥有的方法，但是在运行时可以执行其运行时类型拥有的方法。类型转换运算符可以实现基本类型之间的转型，也能实现引用变量的转型。，这种引用变量的类型在声明它的时候就决定了；，这种变量的类型由实际赋给它的对象决定。]]></description><category></category></item><item><title><![CDATA[【Java15】继承]]></title><link>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140281755</link><guid>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140281755</guid><author>wangxiaochaun</author><pubDate>Tue, 09 Jul 2024 00:00:01 +0800</pubDate><description><![CDATA[（2）在子类的方法中也可以使用。]]></description><category></category></item><item><title><![CDATA[【Java14】构造器]]></title><link>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140280708</link><guid>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140280708</guid><author>wangxiaochaun</author><pubDate>Mon, 08 Jul 2024 22:41:01 +0800</pubDate><description><![CDATA[如果有一天，A的代码改了，那么就要把B，C……实际上，调用构造器时，系统首先为该对象分配内容，并对这个对象执行默认初始化，这时这个对象已经产生了。当构造器执行完毕后，这个对象以构造器的返回值（注意构造器并没有显式定义返回值，但默认返回值就是对象的引用）被返回，通常直接赋值给一个。如果类中没有任何显式定义的构造器，系统会提供一个无参数的构造器，这个构造器执行体为空，不做任何事情（但是实际上执行了默认初始化）。的话，A修改完，B，C……既要在B中调用A，又不想创建额外的对象，方法就是依然使用构造器B来。]]></description><category></category></item><item><title><![CDATA[【Java13】包]]></title><link>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140253645</link><guid>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140253645</guid><author>wangxiaochaun</author><pubDate>Sun, 07 Jul 2024 22:23:27 +0800</pubDate><description><![CDATA[虚拟机在装载lee.Hello类时，会依次搜索CLASSPATH环境变量所指定的系列路径，查找这些路径下是否包含lee路径，并在lee路径下查找是否包含Hello.class文件。如果在lee包下再定义一个子包，那么子包中的类不能直接访问lee包中的类了。此外，在使用子包中的类时，要使用该类的全名（包名+类名），不能省略前面lee包的路径。按道理，-d是指定编译结果.class文件的位置，这里指定是当前目录(.)，但实际上是在当前路径下创建了一个文件夹lee，里面包含Hello.class。]]></description><category></category></item><item><title><![CDATA[【Java12】封装]]></title><link>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140253631</link><guid>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140253631</guid><author>wangxiaochaun</author><pubDate>Sun, 07 Jul 2024 22:22:33 +0800</pubDate><description><![CDATA[从此之后，要么用锁开（成员类），要么通过这几个窗子来访问箱子内部的东西。如果一个Java源文件中，所有的类都没有public修饰，那这个源文件的文件名可以是任意名称；但是一旦有一个类被修饰为。三个访问控制符，表示3个访问控制级别（权限），再加上一个没有任何访问控制符的级别（default），一共4个级别。封装（Encapsulation）是面向对象的三大特征之一（另两个是继承和多态），指的是。，这是由于Java独特的**包（package）**机制导致的。在C++的基础上，Java的访问控制多了一个级别，]]></description><category></category></item><item><title><![CDATA[【Java11】变量的初始化和内存中的运行机制]]></title><link>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140219691</link><guid>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140219691</guid><author>wangxiaochaun</author><pubDate>Fri, 05 Jul 2024 22:49:09 +0800</pubDate><description><![CDATA[对引用类型的局部变量，方法或代码块结束时，它销毁。此时堆中的对象或数组没有人指向它了。若没有任何引用变量指向它，会启动垃圾回收机制，销毁堆内存中的它。尽量使用类来调用类变量。虽然Java允许使用对象来调用类变量，但这太容易造成误会了。没必要非考验自己的智商。系统加载类或创建类的实例时，系统自动为成员变量分配内存空间，然后自动为成员变量指定初始值。]]></description><category></category></item><item><title><![CDATA[【Java10】成员变量与局部变量]]></title><link>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140219239</link><guid>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140219239</guid><author>wangxiaochaun</author><pubDate>Fri, 05 Jul 2024 22:13:38 +0800</pubDate><description><![CDATA[Java中的变量只有两种：成员变量和局部变量。和C++不同，没有全局变量了。，field，我习惯称之为**”属性“**（但这些年，因为attribute更适合被叫做属性，所以渐渐不这么叫了）。是在方法中定义的变量。]]></description><category></category></item><item><title><![CDATA[【Java09】方法（下）]]></title><link>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140191509</link><guid>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140191509</guid><author>wangxiaochaun</author><pubDate>Thu, 04 Jul 2024 22:27:37 +0800</pubDate><description><![CDATA[形参的类型后加。]]></description><category></category></item><item><title><![CDATA[【Java08】方法（上）]]></title><link>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140139362</link><guid>https://blog.youkuaiyun.com/wangxiaochaun/article/details/140139362</guid><author>wangxiaochaun</author><pubDate>Wed, 03 Jul 2024 00:16:23 +0800</pubDate><description><![CDATA[没有独立存在的。]]></description><category></category></item><item><title><![CDATA[【Java07】类中的this关键字]]></title><link>https://blog.youkuaiyun.com/wangxiaochaun/article/details/139973412</link><guid>https://blog.youkuaiyun.com/wangxiaochaun/article/details/139973412</guid><author>wangxiaochaun</author><pubDate>Tue, 25 Jun 2024 23:41:56 +0800</pubDate><description><![CDATA[当static修饰的方法遇到this时，因为static修饰的方法属于类方法，不属于某个具体对象。因此，static方法中的this是无法指向明确的对象的。上述代码中，info()前使用this是允许的（Java允许），但是实际上应该是Example.info()才对。如果仅仅如此，this也就是个指示符而已，但是this还有一个作用，就是可以作为对象的引用变量。上述代码中，在run中实例化dog对象d，再调用d的方法，这么做本身没有问题，但是开辟了一块新的堆内存。构造器中的this也可以省略。]]></description><category></category></item><item><title><![CDATA[【Java06】Java中的类与对象]]></title><link>https://blog.youkuaiyun.com/wangxiaochaun/article/details/139941860</link><guid>https://blog.youkuaiyun.com/wangxiaochaun/article/details/139941860</guid><author>wangxiaochaun</author><pubDate>Tue, 25 Jun 2024 00:08:58 +0800</pubDate><description><![CDATA[Java中对象（实例）的本质，是一个引用变量，和C++，以及之前介绍的数组引用变量类似。类似地，当没有任何指针指向这个对象，Java的垃圾回收机制就会启动。Java中的static关键字用来修饰方法、成员变量，表示。虽然static翻译成“静态”，但其实真正作用就是区分。因此也把static修饰的方法或变量称为。不用static修饰的成员方法或变量称为。这4中成员到底属于类本身还是属于单一实例。]]></description><category></category></item></channel></rss>