Object类、String类、字符串、异常

2023-10-31

快捷键:再IDEA中查看JDK的源代码,ctrl+7;查看一个类的所有方法或者属性,alt+7;快捷生成toString方法,alt+insert(enter)

一、Object类(Object类是参数的最高统一类型)

 1.1、Java.lang.Object类是Java中所有类的共同父类,不需要显示extends,只要是Java的类,Object都是他们的父类(好处:方便与参数统一化)。因此方法参数若需要接收所以类的对象,可以使用Object类来接收。

1.2、除了可以接收所有类的对象以外(因为Object是java中所有类的默认父类),object还可以接收所有的引用数据类型(接口和数组)。

2.1、toString方法,获取一个对象的具体信息

3.1、equals:对象比较相等使用equals方法!!!在引用数据类型进行内容比较时,使用equals方法!!!

3.2千万注意,“==”操作符在进行字符串对象比较和包装类对象比较的时候的陷阱!!!!!!

在Java中,“==”操作符返回布尔值,比较两个变量的“数值”是否相等(对于基本数据类型,变量存储的就是具体的内容值;对于引用数据类型。存储的是对象的地址,“==”实际上是在比较他俩的地址值是否相等,不会比较内容。)。

3.3、只要进行的是对象的内容比较,千万不能使用“==”,统一使用equals方法。

面试题:请说出“==”和equals的区别

1.“==”比较的是两个变量的数值是否相等,对于基本数据类型,比较的是具体保存的数值,对于引用数据类型比较的是两个引用类型的地址是否相同。

2.equals方法是Object类的默认方法,自定义类型覆写equals方法可以按照属性值来比较两个对象的内容是否相等,==比较的是地址,equals比较的是两个对象的属性值是否相同。

二、String类

1、Java中String是引用数据类型

关于字符串的对象创建方法,常用的四种方式有:

a、使用字符串的常量直接赋值

b、通过字符串的常量的构造方法

c、通过字符数组进行构造

d、调用字符串的valueOf方法

面试题:为何String类型被final修饰?

String是引用数据类型,因此String只是保存了字符串对象的地址,被final修饰的类不能被继承,没有子类,限制了String类被扩展或者修改的可能性,这样的话,对于String这个类型就不存在多态,保证所有使用JDK的使用者,大家用的String都是相同的版本,使用的方法也都完全一致。

例:若字符串的引用为null

String str=null;

boolean isEmpty=str.isEmpty();//is.Empty这个方法判断当前字符串对象的长度是否为0;

A、false

B、true

C、编译出错

答:编译出错,只要是通过null值“.”操作任何成员方法,一定都是空指针异常!

正确使用为:

String str=null;

boolean ret=false;

if(str==null || str.isEmpty()){

     ret=true;

}

三、字符串

1、两个字符串对象的比较

“”括起来都是字符串的字面量,都是字符串的对象!

如:System.out.println(“hello”.isEmpty());

1.1、通过==比较(比较的是两个字符串的地址,不看内容)

1.2、通过equals方法来比较两个字符串对象的内容是否相等(大小写敏感)(返回Boolean)

1.3、通过equalslgnoreCase比较两个字符串对象的内容是否相等(大小写不敏感)(返回Boolean)

1.4、通过comparaTo方法来比较两个字符串对象的大小关系(返回int(根据ASCII码值来计算))

comparaTo方法的比较规则:

a、首先按照两个字符串的字典序大小比较,若出现不相等的字符,直接返回这两个字符的大小查值(字符编码差值)

“Hello”

“hello”

“H”-“h”=32;

b、若前k个字符相等(k是两个字符长度的最小值),返回长度差。

“Hello”(S1)

“Hello123”(S2)

System.out.println(S1.comparaTo(S5));

返回-3;

2、字符串常用操作

字符串内部也是使用字符数组来存储内容的 char[] value

字符串也是线性表的一种

JDK中char的包装类character中有一个静态方法,判断字符是否是数字字符

字符串内容的查找

2.1在字符串中查找指定的字符

char charAt(int index);返回字符串中指定索引index位置的字符

3、字符串查找

contains---->判断字符串中是否有指定的子串,若有返回true,否则返回flase。

4、字符串转换

4.1、其他类型转为字符串对象valueOf方法,可以接受所有参数

String S1=String.valueOf(123)---->123

4.2、大小写转换(只限于字母字符串,包含数字或者中文没啥效果)

String S1="hello";

S1=S1.toUpperCase();---->HELLO '

String S1="HELLO";

S1=S1.toLOwerCase();---->hello; 

4.3***字符串转为数组***

a、转为字符数组  toCharArray();

String S1="hello";

char[] data=S1.toCharArray();------>[h,e,l,l,o]

b、转为字节数组getBytes(可以传入指定的字符编码)

4.4、格式化字符串

//类似于c的printf,但是支持正则表达式

String.format();

String str=String.format("%d-%d-%d,2022,9,12");---->2022-3-12

4.5、字符串的替换

String replaceAll(String regex,String replacement);//替换所有指定的内容

String replaceFirst(String regex,String replacement);//替换首个内容

4.6、字符串拆分(将一个字符串按照指定的格式拆分成字符串数组!)

String[] split(String regex);//将字符串全部拆分

String[] split(String regex,int limit);//将字符串以指定额格式,拆分为limit组

当调用split碰到某些特殊字符无法正确拆分时,需要用到转义字符。

例:String str=“192.168.12.14”;

String[] data=str.split(“\\.”);

4.7、*****字符串的截取方法******

String substring(int beginlndex);//从指定位置开始截取到字符串结尾,保留开始字符

String substring(int beginlndex,int endindex);//截取部分内容,左闭右开,保留开始字符,不保留结束字符。

4.8、字符串的trim()方法

trim()方法:去掉字符串的左右两端的空格(制表符、换行符),中间保留。

例:“ hello world ”----->hello world;

5、关于字符串常量的理解

5.1、采用直接赋值类似String str=“字符串字面量”的方式创建字符串对象,会使用字符串的常量池(只有直接赋值的方式会用到常量池)。若该对象第一次使用,就在堆中开辟新空间,产生新对象,产生之后将该对象置入字符串的常量池,当下次再次使用该对象时(还是采用直接赋值的方式),若常量池中已有该内容的字符串,直接引用常量池中的对象,不再创建字符串(即不再产生新的对象)。

例:String str=“hello”;

String str1=“hello”;-------->str==str1----->true;

6、字符串的不可变性

6.1、当一个字符串的对象产生之后,他的内容就无法修改,这称之为字符串对象的不可变性。

6.2、这里指的不可变指的是字符串的对象内容不能修改,而不是字符串的引用。

6.3、经典面试题1:你怎么理解字符串对象不可变,是如何做到内容无法修改的?结合String的源码来分析一下为什么唯独字符串对象的内容无法修改?

之所以字符串对象的内容不可变,本质在于private封装,在String类中,将value数组完全封装,对外没有提供任何获取或者修改该value内容的方法!,因此字符串对象一旦产生,内容就无法修改。(final修饰引用数据类型的变量,不能改的是这个引用的指向不变,至于引用的对象内部如何变化,这是可以的!!)

6.4、经典面试题2: 字符串的subString截取字符串,替换replace等等方法看起来这不都是在修改字符串对象内容吗???

6.5、String类上一把刀,它的对象不可变。因此String类的内部提供的所有设计字符串修改的方法,都会产生新的字符串对象,并不会影响原字符串对象!

6.6、在JAVA中需要反复修改字符串的内容,推荐使用Java提供的StringBuilder(90%都是,线程不安全,效率高)或StringBuffer(10%是,需要保证线程安全的场景)(StringBuild对象上的所有操作都是在原来对象的内部进行修改的!可变的!)

以String Build为例,经常使用到这两个类之间的转换:

String-->StringBuilder

a、通过StringBuilder类的构造方法

例:String str=“abc”;

StringBuilder sb=new StringBuilder(str);

b、通过StringBuilder类的append方法

例:String str=“abc”;

StringBuilder sb1=new StringBuilder();

sb1.append(str);

c、StringBuilder对象->String对象调用toString方法

例:String str=“abc”;

StringBuilder sb1=new StringBuilder();

//abc

sb1.append(str);

//abc123

sb1.append(123);

String ret=sb1.toString();

System.out.printfln(ret);

经典面试题:String、SreingBuilder、StringBuffer类有哪些区别?

1、string的内容无法修改,SreingBuilder、StringBuffer的对象内容可以修改,因此我们一般在字符串对象频繁使用修改的时候使用SreingBuilder或者StringBuffer类。

2、SreingBuilder和StringBuffer的用法完全一致,SreingBuffer采用同步处理,线程安全,效率较低;SreingBuilder采用异步处理,线程不安全,效率较高,开发中若不考虑线程安全问题,一般推荐使用SreingBuilder类进行字符串中内容的修改!!!(javac编译器其实也会将String+=操作优化为SreingBuilder类的append操作)

7、字符串的intern方法 

调用这个intern方法,会将产生的字符串对象置入常量池(若不存在则置入),若常量已存在该对象中,则返回常量中的字符串对象引用。(为了避免歧义,每次调用intern方法之后一定要接受返回值---->str=str.intern();)

8、关于字符串常量池

a、存储一系列的字符串对象,当字符串常量第一次出现,且常量池中没有该值的字符串对象,就会将该对象置入常量池。

b、若采用直接赋值的方式声明字符串引用,若常量中存在该对象,则直接返回常量池的字符串对象,不会创建新对象。

c、关于intern方法,尝试将当前字符串对象置入常量池,若常量池没有该值,则将当前对象置入常量池,若常量池已经包含了该值的对象,则不会将该对象置入常量池,intern方法直接返回常量池对于的对象。

四、异常

1.1、在Java中,将程序执行过程中发生的一些不正常行为称之为“异常”,编译阶段语法错误不是异常!

2、两大最常见的异常

a、越界异常(IndexOutOfBoundsException)

b、NPE(空指针异常,NullPointerException)

例:str=null;

System.out.println(str.length());

3.1异常的继承体系(所有异常的子类都is a异常)

 一旦是发生error异常,程序一定会退出,程序员别无他法只能检查问题出现的地方并修改。

 4、try.....catch的使用

4.1、catch代码块只会捕捉相应的异常,若try中出现的异常不是当前catch对应的异常,程序还是会中断。(此时可以考虑使用多个catch)

4.2、若在某段代码块中可能会产生多个异常的时候,推荐使用多个catch代码块来捕捉不同类型的异常类型,也有程序员使用父类来接受所有的异常!!(不过这种写法不推荐使用,出现的异常不知道具体产生的原因)

4.3、例:假如出现两个运算异常,是否会被捕捉两次?输出两次异常呢?

不会!!异常的捕捉只会出现一次。(如try中第一次检测到出现异常的代码后,剩下的代码就不再执行,直接转到catch)

4.4、异常处理流程

try{     (若异常发生,try剩下代码不再执行,去catch块中匹配具体的异常类)

  //所有可能产生异常的代码块

}catch(要捕捉的异常类型){   (若没有相关的catch块与出现的异常匹配,程序退出,执行剩下代码块)

//出现异常之后执行的代码

}finally{

//无论是否发生异常,一定会执行的代码块

}

补充:捕获到相关异常之后打印异常产生错误的原因以及出现的位置,可以调用异常对象的printStackTrace方法

System.err.println();---->错误输出

4.5、关于catch的代码块的特殊说明

a、若多个catch代码块出现父子关系,则一定是子类写在前,父类写在后。顺序不能改变。

5、异常体系

a、受查异常:程序编译阶段必须显示进行异常处理的异常类型,除了非受查异常以外全部都是受查异常,比如IOException与SQLException都是受查异常。

b、非受查异常:程序编译阶段可以不处理异常,在运行的阶段输出异常Error与RuntimeException以及子类都属于非受查异常,NPE,越界异常,类型转换异常。

6、在异常中finally关键字的特殊情况

6.1、无论是否发生异常,并且这个异常有没有正确被捕捉到,final代码块都会被执行(一般资源的关闭操作,网络的关闭操作都放在final代码块中处理)

6.2、finally中包含return语句的特殊情况:1、finally中的return会覆盖try或者catch的返回值!2、一般开发中,finally只是进行资源操作不涉及返回值。

7.异常的处理流程

1.1、本方法的内部产生异常,当前方法就处理。

1.2、本方法的内部产生异常,自己不处理,将异常对象沿着方法的调用链向上传递!

2.1、有两组关键字和异常抛出有关

a、throws用在方法声明上,明确表示当前方法可能产生的异常,但当前方法不处理,若异常产生,将异常抛出给调用者。(主方法处理异常,主方法的内部的其余代码正常运行结束,若主方法不处理异常,则该异常就会抛回JVM,程序退出)(throws也可以同时抛出多个异常,若抛出的异常有父子关系,只需要声明父类异常即可)

b、throw用在方法的内部,表示人为进行异常对象的产生,一般和自定义异常搭配使用。(按照Java语法来说,此处没有任何异常,但是我们根据具体的业务场景,可以规定在某些场景下,抛出相关的异常!这就要使用throw关键字,人为进行异常对象的产生!)

8、自定义异常的两步走

1、只需要继承Exception(受查)或者RuntimeException(非受查)===>必须显示处理异常的继承Exception,可以不显示处理,就继承RuntimeException

2、实现一个带String的有参构造,String方法参数,就是异常的原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Object类、String类、字符串、异常 的相关文章

  • OSGi:将参数传递给特定包

    我有一个带有自定义 Main 类的自定义 jar 它启动 OSGi 框架并安装 启动捆绑包 这个主 jar 还包括一个属性文件 目标 我有一个包 A 它应该以某种方式获取主 jar 的该属性文件的属性 我的第一次尝试是在捆绑包 A 中定义一
  • 在 Java 中重置 Graphics2D 对象

    我正在用 Java 尝试 Graphics2D 但像往常一样 我被困住了 P 问题是 假设我有这个代码 Graphics2D g Graphics2D this getGraphics Inside a JFrame g rotate Ma
  • Windows 上的虚假唤醒。是否可以?

    我最近学习了 虚假唤醒 有人说这个问题只可能发生在某些类型的 Linux PC 上 我用的是窗户 我为虚假唤醒编写了测试 我得到的结果是这是可能的 但我想向您展示这个测试 也许我在某个地方犯了错误 我的初始变体 import java ut
  • mvn dependency:analyze 结果不正确

    我一直在寻找一种工具 它能够向您显示未使用的依赖项 我很快就偶然发现了 Maven 命令mvn dependency analyze 这样做的问题是 它经常检测到 未使用的 依赖项 如果缺失 这些依赖项就会导致构建失败 这是优化项目的示例
  • JLabel.setText() 中的换行符

    使用 JLabel setText 时如何插入换行符 我尝试使用 Html 但似乎可以使其适用于 setText 仅适用于 jLabel 的初始声明 最初声明 jlabel 时的方法是 label new JLabel Hello Worl
  • 使用 ScheduledExecutorService 安排每月任务

    我想在该月的某一天的特定时间安排一项任务 每次运行之间的间隔可以设置在 1 到 12 个月之间 在java中 可以使用ScheduledExecutorService以固定的时间间隔调度任务 既然一个月的天数不固定 那么如何实现呢 提前致谢
  • 在 Jenkins 内运行构建时,我收到“java/lang/OutOfMemoryError”

    2020 02 25 10 11 24 986 0000 id 79 信息hudson model AsyncPeriodicWork lambda doRun 0 开始maven repo cleanup 2020 02 25 10 11
  • 带有 spring-kafka 的 Kafka 死信队列 (DLQ)

    最好的实施方式是什么死信队列 DLQ Spring Boot 2 0 应用程序中的概念 使用 spring kafka 2 1 x 来处理无法处理的所有消息 KafkaListener某些bean发送到某些预定义的Kafka DLQ主题的方
  • 如何在 Android 中将 EditText 绘制到画布上?

    我想画画 EditText username new EditText context 到我画布上的特定位置 protected void onDraw Canvas canvas 是否可以在基础上画出x y在我的 Java 文件中协调而不
  • java.sql.SQLException: - ORA-01000: 超出最大打开游标数

    我收到 ORA 01000 SQL 异常 所以我有一些与之相关的疑问 最大打开游标是否与 JDBC 连接数完全相关 或者它们也与我们为单个连接创建的语句和结果集对象相关吗 我们正在使用连接池 有没有办法配置数据库中语句 结果集对象的数量 如
  • 从 Java 调用 Python 代码时出现问题(不使用 jython)

    我发现这是从 java 运行 使用 exec 方法 python 脚本的方法之一 我在 python 文件中有一个简单的打印语句 但是 我的程序在运行时什么也没做 它既不打印Python文件中编写的语句 也不抛出异常 程序什么都不做就终止了
  • 如何在最短的时间内克隆java中的输入流

    有人可以告诉我如何克隆输入流 并花费尽可能少的创建时间吗 我需要多次克隆输入流以使用多种方法来处理 IS 我尝试了三种方法 但由于这样或那样的原因 事情不起作用 方法 1 感谢 stackoverflow 社区 我发现以下链接很有帮助 并将
  • Java 中 LINQ 的等价物是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Java 中 LINQ 的等价物是什么 没有什么比 LINQ for Java 更好的了 Edit 现在
  • 在Java中一个接一个地播放WAV文件

    我正在尝试玩几个WAV http en wikipedia org wiki WAV文件一个接一个 我尝试了这个方法 for String file audioFiles new AePlayWave file start 但这会同时播放它
  • GAE - Eclipse 中的开发服务器未更新?

    我在 Eclipse 上使用 Google AppEngine 开发服务器 我的本地网页似乎没有更新 直到我在开发服务器上进行了多次重新启动 使用 Eclipse 中的 运行 或 调试 按钮 我究竟做错了什么 基本流程是 更改 java 文
  • ObservableList 不更新 ArrayList

    对于学校作业 我们正在使用 JavaFX 中的 ObservableList 对象 对吗 我已经为此工作了一天多了 但无法弄清楚 老师只告诉我们 谷歌一下 所以这也没有帮助 基本上 我们正在开发一个基本的管理应用程序来跟踪人们及其家人 人们
  • 无法运行简单的 doclet 程序:包 com.sun.javadoc 不存在

    我正在尝试运行一个简单的 doclet 程序 但无法编译它 javac cp cygdrive c Progra 2 Java jdk1 8 0 65 lib tools jar A java 但它抛出 A java 1 错误 包 com
  • 在调试模式下,哪些代码更改会自动反映在 Eclipse 中?

    我使用 eclipse 用于编写 调试 作为 IDE 在调试模式下 当我进行一些更改 例如初始化局部变量 时 它们会自动反映 但其他更改例如更改静态变量的值 有时我会收到一条消息 说我需要重新启动虚拟机 有时则不需要 现在的问题是哪些类型的
  • 如何使用自定义转换器访问 jOOQ 生成的例程字段作为值?

    我在访问生成例程的字段时遇到问题PL pgSQL 用户定义函数 返回JSON 数据类型结果 已经提到this https stackoverflow com q 62535195 6805866问题 这是我的结果get all orders
  • 跳过一行GridBagLayout

    我在 JFrame 上使用 GridBagLayout 我希望能够跳过一两行 但将这些行显示为空白 然后在这些行后面有一个按钮 我在文档中找不到任何方法来执行我所描述的操作 有谁知道我可以执行此操作的任何方法吗 发现它比添加空组件干净得多

随机推荐

  • 压缩图片网站

    https tinypng com 压缩图片网站
  • java入职写不出代码_各位程序员是怎么度过看懂代码但写不出来的时期?

    说实话 我自己就没经历过这样的时期 说看得懂代码的 大概是很少看开源代码 想看懂不仅自己水平要过硬 还要花挺大的精力把前前后后的东西都做充分的研究 我自己总是会有自己写一个功能很有思路 但是搞懂别人同样功能代码却感觉很费力的体验 我猜测题主
  • safari ajax timeout,Safari ajax提交表单无响应?

    两个项目均遇到了Safari ajax提交无响应了 表单里有text file字段 file字段用于上传封面图片 创建的时候没问题 当修改的时候 我不想修改封面图 只修改内容 结果Safari提交后无响应 一直在转圈 到最后超时提示 Fai
  • 2020年,Java 开发者必须了解的 16 个Java 顶级开源项目

    2020年 值得你关注的16个Java 开源项目 本文已经收录自笔者开源的 JavaGuide https github com Snailclimb JavaGuide Java学习 面试指南 一份涵盖大部分Java程序员所需要掌握的核心
  • linux qt读写文件,QT 文件读写操作

    include include 1 打开文件 QFile f fn fn可以是一个相对路径或绝对路径 f open IO 一般不要IO ReadWrite 很容易出现赃数据 如果要在文件的后面添加内容要IO WriteOnly IO App
  • C/C++动态分配内存的几种方法

    使用C C 编程时 会经常动态分配内存 以便合理使用内存 本文主要讲述动态内存分配的几种方法及一些原理 理解不深刻之处欢迎指教 引言 为什么要进行动态内存分配 以数组为例 数组元素在内存中存储的地址是连续的 声明一个数组后 该数组需要的内存
  • 微信小程序设置背景图片

    var src1 images index wx56 png let src11 wx getFileSystemManager readFileSync src1 base64 var src111 data image jpg base
  • IntelliJ IDEA查看指定文件的文件类型、修改文件类型、解决无法正确识别文件类型的问题

    如下图 有时候明明创建的文件后缀名为 xml 可是点进去确是文本文件 一开始实在是觉得匪夷所思 那如何让编辑器识别他是xml文件呢 首先File Settings 然后 这里我要把RoleMapper xml识别为xml文件 编辑器提示Ro
  • windows下prometheus+mysqld_exporter+granafa监控mysql

    一 安装prometheus 可以从官网下载 也可以从github下载 从github下载快一点 官网 https prometheus io download github https github com prometheus prom
  • Python记1(输入/出,字符,数据类型,运算符,语句,with

    目录 1 杂 2 输入 输出 3 特殊字符 转义字符 5 数据类型 5 1数据类型转化 6 运算符 7 语句 7 1 条件分支 if elif elif else 7 2 条件表达式 7 3 循环while for 7 4 上下文管理类型
  • React中组件懒加载的使用

    为什么要使用懒加载 减少了应用启动时间 页面的加载速度变快 提升用户体验 懒加载 页面首次打开 不加载在路由中设置为懒加载的组件 只有用户在实际使用中 使用到了这个组件 才会开始加载 实现代码 import React lazy from
  • VMware Workstation Player与VMware Workstation Pro的区别

    linux开发与学习 免不了安装虚拟机 想想自己最开始只有一台电脑 为了体验最有滋味的linux 划重点 直接装了个双系统 之后就是各种苦不堪言 在ubuntu学着做着 为了个工具不得不关机重启回到windows 过了一分钟 切到windo
  • JS高级(4)函数高级 — 闭包

    闭包 循环遍历 给每个按钮都绑定上单击响应函数 var btns document getElementsByTagName button for var i 0 i lt btns length i 这样写会有一个问题 btns是一个伪数
  • 什么是区块链?区块链详解

    区块链简介 什么是区块链 目前没有看到很好的定义和介绍 网上要么是讲一些区块链意义的空泛文章 比如 区块链技术颠覆谁谁谁 又或 互联网已颠覆世界 区块链要颠覆互联网等等 要么就是通篇介绍比特币 矿工 挖矿等 那么区块链到底是个什么东西 它跟
  • python bottle 制作表单_使用Bottle(Python)的AJAX提交表单

    我在使用Bottle框架进行 AJAX通信时遇到了一些问题 这是我第一次使用AJAX 所以我可能只是错误的基础知识 希望瓶子 AJAX大师可以指出这个新手正确的方向 这是我正在使用的代码 usr bin env python from bo
  • dm9000网卡,uboot代码分析

    uboot移植 九 移植网卡DM9000 一 原理 TQ210 板载的网卡芯片是 DM9000A 接在 S5PV210 的 SROM 控制器的 BANK1 上 S5PV210 的 SROM 控制器支持 8 16 位 NOR Flash PR
  • 人工智能数学基础6:极限、极限运算、ε-δ语言、ε-N语言、级数和函数连续性

    老猿Python博文目录 一 极限的定义及四则运算 极限 某一个函数中的某一个变量 此变量在变大 或者变小 的永远变化的过程中 逐渐向某一个确定的数值A不断地逼近而 永远不能够重合到A 永远不能够等于A 但是取等于A 已经足够取得高精度计算
  • framebuffer驱动详解

    裸机中如何操作LCD LCD的显示原理 DDR中分出一块内存 将要显示的内容放到显存中 硬件自动将显存数据放到驱动器中 驱动器操控LCD显示内容 裸机操作LCD的方法由LCD的本身的工作原理决定 OS下操作LCD的难点 内核 驱动 做底层硬
  • c++中数组的使用

    在c 中 有三个强而有力的工具 分别是数组 指针还有字符串 可以说 没有熟练掌握这三个工具的不能算是一个合格的程序员 1 数组 数组 实际上就是向系统申请一个连续的内存空间 每个内存空间的地址连续 并且大小相同 关于数组的声明 语法如下 类
  • Object类、String类、字符串、异常

    快捷键 再IDEA中查看JDK的源代码 ctrl 7 查看一个类的所有方法或者属性 alt 7 快捷生成toString方法 alt insert enter 一 Object类 Object类是参数的最高统一类型 1 1 Java lan