您的位置:首页 > 编程语言 > Java开发

4.java笔记之十六进制转十进制(华为)

lzh_hahaha 2020-04-23 11:27 120 查看 https://blog.csdn.net/lzh_haha

写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。(多组同时输入 )

输入描述:
输入一个十六进制的数值字符串。

输出描述:
输出该数值的十进制字符串。

示例1
输入
0xA
输出
10

链接: 牛客网.

这题我不会

解一:

import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while (sc.hasNext()){
String str=sc.next().substring(2);//截取第3个开始的字符串,0xA,就是A
System.out.println(Integer.parseInt(str,16));//将str解读为16进制,并返回10进制的数
}
}
}

总结:

  1. Integer.parseInt(String s ,int radix):radix用来表示传进来的值是什么进制的,并返回10进制的 int 类型的结果。
  2. substring()方法:返回字符串的子字符串。
    用法:
public String substring(int beginIndex);
public String substring(int beginIndex,int endIndex);
beginIndex: 起始索引(包括),索引从0开始。
endIndex: 结束索引(不包括)。
返回值: 子字符串
  1. Integer.parseInt(s)的作用就是把字符串s解析成有符号的int基本类型。
    Integer.valueOf(s)把字符串s解析成Integer对象类型。
    区别
    ①Integer.parseInt(s)多次解析同一个字符串得到的int基本类型数据是相等的,可以直接通过“= =”进行判断是否相等。int是基本类型,不含有equals方法,所以只能用“= =”比较,基本类型用“= =”比较的是两个值的大小。
    ②Integer.valueOf(s)多次解析相同的一个字符串时,得到的是Integer类型的对象,得到的对象有时是同一个对象,有时是不同的对象,要根据把s字符串解析的整数值的大小进行决定:如果s字符串对应的整数值在 -128 到127之间,则解析出的Integer类型的对象是同一个对象;如果s字符串对应的整数值不在-128~127之间,则解析出的Integer类型的对象不是同一个对象。不管对象是否相等,对象中的value值是相等的。
    联系
    Integer.parseInt(s)是把字符串解析成int基本类型,Integer.valueOf(s)是把字符串解析成Integer对象类型,其实int就是Integer解包装,Integer就是int的包装,在jdk8中已经自动实现了自动解包装和自动包装,所以两种方式都能得到想要的整数值。

    链接: https://www.geek-share.com/detail/2727865657.html.

  2. 基本类型与包装类(自动拆箱装箱)+java的基本类型,常量,引用类型(string属于引用类型)+类的加载过程+jvm(jre,jdk,java SE(java SDK),java EE,java ME)
    链接: https://www.geek-share.com/detail/2710040120.html.(这时就不得不把java虚拟机结构也看看:计数器,本地栈,虚拟机栈,方法区,虚拟机堆)

  3. ==与equals():说说我的理解,对错就不知道,应该没错。其实它们应该比较的都是俩对象的首地址,然后Object类(所有类的父类吧)中有个equals()方法,这个方法就是比较对象地址,但是字符串类(String类)和包装类对equals()这个方法重写(覆盖)标记文本了,使其比较的是两个String类对象的内容(即字符串的内容),对包装类来说是值的大小。总的来说,除了String类对象和包装类对象的equals()方法比较的是内容(值),其他类对象的equals()和= =都是比较的地址。另外,那8个基本类型不是类,没有方法,也就只有= =来比较值。还有StringBuffer,StringBuilder类这玩意不属于String类,它里面没有重写equals()方法,也就比的是对象地址。

  4. String类:不可变类,对象中的字符序列不可变动。但表面上看起来却变了。这就牵扯到字符串常量,字符串对象和引用变量分别放在jvm的哪块,以及指向位置(java指针就是引用变量类型),比较麻烦,以后再来记录一下。
    StringBuffer类:序列可变类,它有改变字符序列的多个方法,append,insert,reverse啥的。加了Synchronized关键字(同步锁),所以一个时间只能有一个线程占有,线程安全。
    StringBuilder类:序列可变类,方法与上面那个基本相同,不过它是非线程安全,所以高效些。

  5. 重载与重写(覆盖):重载是同一个类中多个方法名相同,但这几个方法参数个数,类型不同,也因此来判断载入哪个方法。重写是派生类对基类的一个方法的实现体重建,方法名和参数都没变。重载对返回类型无要求,重写就麻烦了。
    详见链接: https://blog.csdn.net/wintershii/article/details/80558739.

  6. 线程,进程与程序区别.

  7. Synchronized关键字

越解释越多了,hahaha。。。今天先到这

  • 点赞 1
  • 收藏
  • 分享
  • 文章举报
紫柳 发布了4 篇原创文章 · 获赞 1 · 访问量 182 私信 关注
标签: