public class Main{
public static void main(String[] args){
System.out.println("The size of short is " + Short.SIZE / 8 + " bytes.");
System.out.println("The size of int is " + Integer.SIZE / 8 + " bytes.");
System.out.println("The size of long is " + Long.SIZE / 8 + " bytes.");
System.out.println("The size of long long is " + Long.SIZE / 8 + " bytes.");
}
}
XXX.SIZE:数据类型在内存中所占空间大小
public class Main{
public static void main(String[] args){
int rem[] = new int[10];
String r[] = new String[10];
int num=1234;
int len1=0,len2=0;
int i;
for(i=0;num/8>0;i++){
rem[i]=num%8;
num = num/8;
len1++;
}
rem[len1]=num;
System.out.print("0");
for(i=len1;i>=0;i--){
System.out.print(rem[i]);
}
System.out.print(" ");
num=1234;
for(i=0;num/16>0;i++){
rem[i]=num%16;
num = num/16;
len2++;
}
rem[len2]=num;
for(i=len2;i>=0;i--){
if(rem[i]<10) r[i]=Integer.toString(rem[i]);
else if(rem[i]==10) r[i]="A";
else if(rem[i]==11) r[i]="B";
else if(rem[i]==12) r[i]="C";
else if(rem[i]==13) r[i]="D";
else if(rem[i]==14) r[i]="E";
else r[i]="F";
}
System.out.print("0X");
for(i=len2;i>=0;i--){
System.out.print(r[i]);
}
}
}
在不知道API的情况下直接用数学方法除8(16)取余,收获:整型数转字符串Integer.toString(num)或String.valueOf(num)
学习一下别人的代码:
答案一:利用 printf 实现进制转换
public class Main
{
public static void main(String[] args)
{
System.out.printf("0"+"%o",1234);
System.out.printf(" 0X"+"%X",1234);
}
}
解析:
答案二:利用 Integer 实现进制转换
public class Main
{
public static void main(String[] args)
{
int i=1234;
System.out.println("0"+Integer.toOctalString(i)+" 0X"+Integer.toHexString(i).toUpperCase());
}
}
解析:Integer类的方法
答案三:利用 BigInteger 实现进制转换
import java.math.BigInteger;
public class Main
{
public static void main(String[] args)
{
System.out.println("0" + change("1234",10,8) + " 0X" + change("1234",10,16));
}
/**
* number 要转换的数
* from 原数的进制
* to 要转换成的进制
*/
private static String change(String number, int from, int to)
{
String str = new BigInteger(number, from).toString(to);
return str.toUpperCase();
}
}
解析:
public class Main{
public static void main(String[] args){
String hex = "ABCDEF";
int s = Integer.parseInt(hex,16);
System.out.printf("%15d",s);
}
}
1.integer.parseInt(string s,int radix):
参数:
s - 包含要分析的整数表示形式的 String
radix - 分析 s 时使用的基数,省略了radix,则基数为10(进制)。
返回:
使用指定基数的字符串参数表示的整数。
抛出:
NumberFormatException - 如果 String 不包含可分析的 int
2.System.out.printf();可以实现对输出宽度的控制以及左右对齐
System.out.printf("%f",a);
浮点数形式输出
System.out.printf("%+d",b);
输出的数带正负号
System.out.printf("%-3d",b);
左对齐输入(默认右对齐)
这个需要注意的是若为
System.out.printf("%-d",b);
则提示出错:java.util.MissingFormatWidthException,左对齐需要指定长度,否则无意义,下面语句带左对齐的输出同样需要指定长度,部分参考资料这里没有声明,会造成输出报错
System.out.printf("%+-6d",b);
带正负号输出且左对齐
System.out.printf("%+9.5d",b);
带正负号输出,且符号占用一个长度,9代表输出的长度,5代表小数点后的位数
System.out.printf("%s",s);
以字符串输出
System.out.printf("%d,%s,%f",b,s,a);
可以输出多个变量
public class Main{
public static void main(String[] args){
System.out.println("Hello world!");
System.out.println("Hello world!".length());
}
}
所以printf的返回值就是打印字符串的长度
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String[] a = s.nextLine().split("[;,]");
int id = Integer.parseInt(a[0]);
double s1 = Double.parseDouble(a[1]);
double s2 = Double.parseDouble(a[2]);
double s3 = Double.parseDouble(a[3]);
System.out.print("The each subject score of No. " + id + " is " + String.format("%.2f", s1) + ", " + String.format("%.2f", s2) + ", " + String.format("%.2f", s3) + ".");
}
}
split() 方法根据匹配给定的正则表达式来拆分字符串。
注意: . 、 $、 | 和 * 等转义字符,必须得加 \。
注意:多个分隔符,可以用 | 作为连字符。
语法:public String[] split(String regex, int limit)
参数:regex – 正则表达式分隔符。 limit – 分割的份数。
返回值:字符串数组。
举例:
System.out.println("");
System.out.println("- 分隔符设置分割份数返回值 :" );
for (String retval: str.split("-", 2)){
System.out.println(retval);
}
输出结果:
- 分隔符设置分割份数返回值 :
Welcome
to-Runoob