【JAVA学习】2 整形、长整型、Number类、Math
Leetcode 反转整数+回文数 相关知识点
反转整数
题目
给定一个 32 位有符号整数,将整数中的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。
知识点
整形、长整型、浮点型 边界值
- int型边界最大值:Integer.MAX_VALUE
- int型边界最小值:Integer.MIN_VALUE
- long型边界最大值:Long.MAX_VALUE
- long型边界最小值:Long.MIN_VALUE
- float型边界最大值:Float.MAX_VALUE
- float型边界最小值:Float.MIN_VALUE
整形与长整型之间的转换
不要直接将数据类别强制转换,会编译出错。
较好方式有两种(long a = 23;)
- 借助Long类:
int new_a = new Long(a).intValue(); - 借助字串:
int new_a = Integer.parseInt(String.valueOf(y));
解法
其实将整数反转并不难,每次将旧整数的最后一位取余放到新整数的后面即可。当然我们也可以将整数变为字串,用字符两两交换的方法,只是效率会更低。
对于大多数人来说,这道题最容易忽略的地方在于,数值溢出的判定条件。我想到的方式有两种:
- 解法一:将逆序后的值直接与边界值比较。
public int reverse(int x) {long y = 0;while(x != 0){y = y*10 + x%10;x = x/10;}if(y < Integer.MIN_VALUE || y > Integer.MAX_VALUE){return 0;}else{//return new Long(y).intValue();return Integer.parseInt(String.valueOf(y));} }
- 解法二:将逆序的整数先用long型表示,看逆序数long型和int型数值是否一致。
public int reverse(int x) {long y = 0;while(x != 0){y = y*10 + (x%10);x = x/10;}int y1 = new Long(y).intValue();if(y1 != y){return 0;}else{return y1;}}
回文数
题目
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题吗?
知识点
缺省数据类型&对应类
原始类型 | 封装类 |
---|---|
boolean | Boolean |
char | Character |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
Number类常用方法
- xxxValue():将Number对象转化为xxx数据类型的值并返回
– byteValue():以byte形式返回指定的数值
– doubleValue():以double形式返回指定的数值
– floatValue():以float形式返回指定的数值
– intValue():以int形式返回指定的数值
– longValue():以long形式返回指定的数值
– shortValue():以short形式返回指定的数值
Long a = new Long(13546);b = a.intValue();// Integer i = 1;// Integer n = Integer.valueOf(1);Integer i = new Integer(1);int j = i.floatValue();
- public int compareTo(NumberSubClass referenceName):将number对象与参数比较,返回number对象值-参数的差值
int x = 1; // x是一个整形数
Integer y = new Integer(2); // y是一个整形类
return y.compareTo(x); // 返回d为1
- public boolean equals(Object o):判断number对象是否与参数
int x = 5;
Integer y = 10;
Integer z = 5;
return y.equal(x); // 返回false
return z.equal(x); //返回true
- valueof():返回一个Number对象指定的内置数据类型
– Integer valueOf(int i):返回一个表示指定int型的Integer实例
– Integer valueOf(String s):返回一个表示指定String型的Integer实例
– Integer valueOf(String s, int radix):返回一个Integer对象,该对象中保存了用第二个参数提供的基数进行解析是从指定Sting中提取的值
Integer b = Integer.valueOf("444",16); //使用16进制
- toString():返回以一个字符串表示的Number对象值
– String toString()
– static String toString(int i)
Integer x = 5;
return x.toString();
return Integer.toString(12);
- parseInt():将字符串解析为int类型
– static int parseInt(String s)
– static int parseInt(String s, int radix)
int x = Integer.parseInt("9");
double c = Double.parseDouble("5");
int b = Integer.parseInt("444",16); //基数“444”为16进制
Math类常用方法
- abs():返回参数的绝对值
- ceil():返回大于等于(>=)给定参数的最小整数
- floor():返回小于等于(<=)给定参数的最大整数
- rint():返回与参数最接近的整数,返回类型为double。
- round():对数字进行四舍五入。算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整。所以Math.round(11.5)=12,而Math.round(-11.5)=11。
- min():返回两个参数中的最小值
- max():返回两个参数中的最大值
- exp():返回自然数底数e的参数次方
- log():返回参数的自然数底数的对数值
- pow():返回第一个参数的第二个次方
- sqrt():求参数的算术平方根
- sin():求指定double类型参数的正弦值
- cos():求指定double类型参数的余弦值
- tan():求指定double类型参数的正切值
- toRadians():将角度转化为弧度
- toDegrees():将参数转化为角度
- random():返回一个随机数
解法
想要解这道题,首先要理解回文数的意义,抓两个重点:一是对象——整数;二是左一等于右一,左二等于右二依次类推。还有种情况可以直接排除,只要整数为负则一定是非回文数。
方法一:将整数逆序,然后将逆序前后的数字比较是否一致。当然这种情况需要先判断数字书否为负。
class Solution {public boolean isPalindrome(int x) {if(x < 0) return false;else{int y = 0;int x1 = x;while(x1 != 0){y = y*10+x1%10;x1 = x1/10;}if(x == y) return true;else return false;}}
}
方法二:先求数字的长度。通过求商求余逐个将最高位与最低位相比较,相同的话比较次高位和次低位。如果在过程中发现不同,则为非回文数;只有当所有高低位均相同时,才为回文数。
class Solution {public boolean isPalindrome(int x) {if(x < 0){return false;}else{int y = 0;int x1 = x;while(x1 != 0){y = y*10+x1%10;x1 = x1/10;}if(x == y){return true;}else{return false;}}}
}
方法三:是方法二的变种,思路是相同的,不同之处在于,法三直接将数字转换为字符串求解,这样代码相对简单。
注释中讲解了int转String常见的三种方法。
class Solution {public boolean isPalindrome(int x) {// String s = String.valueOf(x); //法一:int转String// String s = x+""; //法二:int转String String s = Integer.toString(x); //法三:int转Stringchar[] ch = s.toCharArray(); // System.out.println(ch[0]); //只有将String转换成char[]才能对字串中每个字符进行修改// int len = s.length(); //String获取字串长度int high = ch.length-1; //数组获取字串长度int low = 0;while(low < high){if(ch[low] != ch[high]){return false;}low += 1;high -= 1;} return true;}
}
【JAVA学习】2 整形、长整型、Number类、Math相关推荐
- java中怎么输入长整型_c语言如何输入长整型 scanf输入长整型
C语言中无符号长整型数的输入输出格式是什么? 整数变量的分类:basic integer:int short integer:short int long int将修饰符unsigned添加到上述三个 ...
- java长整型转换为整型_java ip地址转换为长整型
java ip地址转换为长整型 java ip地址转换为长整型: public class Util { /** * 字符串ip转换为long * @param 字符串ip * @return */ ...
- python 长整型_Python变量类型(l整型,长整形,浮点型,复数,列表,元组,字典)学习...
#coding=utf-8 __author__ = 'Administrator' #Python变量类型 #Python数字,python支持四种不同的数据类型 int整型 long长整型 flo ...
- java长整型数输入格式_java编程之计算16位长整型数字中0-9出现次数(从命令窗输入数据)...
/* *读入一个16位的长整型,利用switch语句计算0-9这十个数字中,每个字出现的次数 **/ import java.util.Scanner; class number{ public st ...
- Java | 由天数计算日期:长整型long转换为日期
如题,晚上突发奇想要写个程序算一下和烧饼是哪天认识的,记得很多年前QQ是能看加好友的时间的,现在却只能看认识天数了,所以只好自己动手啦. 用的是Java,这是上学期学的内容了,但知识全还给老师了,花了 ...
- Java的长整型Long/long后面的数字什么情况下必须加L?
[1] 问题的由来 在日常开发中,实体类需要序列化,一般写法如下: public class User implements java.io.Serializable {private stati ...
- c语言中长整型的作用,C语言,整形和长整型都占四个字节?
C语言中,整型常量和长整型常量,有什么区别? 整型常量和长整型常量(包括有符号的和无符号的),为什么占用字节数和一.指代不同 整型常量:是通常的整数,包括正整数.负整数和0,其数据类型显然是整型. 长 ...
- java长整型时间转日期_C#长整型时间与java长整型时间转换
最近在有一个解析并转发病毒软件日志的活,这个软件用的是SQLite嵌入式数据库存储病毒日志.查询病毒记录后,我发现它用长整型存储攻击时间这个字段,而且是一个10位的值.而我的解析系统是用C#写的,C# ...
- Java实现点分十进制IP和长整型转换
转载:http://blog.csdn.net/lin111000713/article/details/16337391 原理: IP地址是一个以点作为分隔符的十进制四字段字符串,例如"1 ...
最新文章
- 彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM+LIO-SAM)
- Sqlserver 2000 迷你、便携企业管理器(10M),支持Dts编辑
- Prototype和Scriptaculous圣经——《Ajax实战:Prototype与Scriptaculous篇》
- 活体检测很复杂?仅使用opencv就能实现!(附源码)
- matlab里输出恒压的逆变器,基于IGBT逆变器的异步电机变频调速系统的MATLAB仿真...
- 面试题 08.09. 括号
- android spi读写不通,Android-SPI学习笔记
- Eclipse:An internal error occurred during: Building workspace. GC overhead limit exceeded
- python播放音乐同步歌词_Python 歌词解析器 音乐与歌词同步播放
- python12岁该学吗_本人12岁,对编程感兴趣,之前也学过python,被爸妈打消积极性,面对爸妈的反对,我该顺从还是继续?...
- 手机与电脑共享文件资源的几种方法
- poj2315足球游戏
- 使用canvas画出满天繁星
- 图书馆小程序—Alpha迭代—第七周会议记录
- 分享10个非常不错的封面设计模板
- 作为一位软件测试工程师,应当需要哪些能力?
- 浙江生物计算机技术,New Page 1
- 中国全球GPU市场竞争格局分析
- Myth源码解析系列之一-项目简介
- 存储区域网(SAN)
热门文章
- 输入数字1-7中的任意一个数,若输入1,则输出 星期一,一次类推,输入7,则输出星期日。(使用switch语句)
- Python之程序调试
- 中国联通、中国电信、中国移动的3G速度对比!
- android 覆盖安装 代码没有更新,android 无法覆盖安装软件
- 同步IO、异步IO、阻塞IO、非阻塞IO之间的联系与区分
- Macbook(M2 Air) 使用笔记/经验分享
- C语言中字符串赋值处理方式,C语言中字符串赋值处理方式
- JavaScript函数式编程之偏函数(Partial Function)
- SQLyog远程连接mysql
- 你这么拼,家里一定很穷吧!