初学者的一点点小见解
很感谢你可以点开这篇文章,这是我第一次写这些东西,很零碎,所以似乎杂乱的一匹,收录了我刚接触java的一些困惑和我的思路。希望像我一样的萌新可以有所启发。
基本类型的转换
首先是基本类型和字符串相互转化
基本类型 转换为 字符串 有三种方法:
- 使用包装类的 toString() 方法
- 使用String类的 valueOf() 方法
- 用一个空字符串加上基本类型
将字符串转换成基本类型有两种方法: - 调用包装类的 parseXxx 静态方法
- 调用包装类的 valueOf() 方法转换为基本类型的包装类,会自动拆箱
1.String to char:
String s = input.next();
char[] chars =s.toCharArray();
将字符串转化为char型并存入char数组
2.char to String:
方法一:String str=String.valueOf(char);
可把char数组转化为String字符串
String str=String.valueOf(char[] ch);
方法二:可在String初始化时传入char数组进行转化:
String str=new String(char[] ch);
方法三:String str=‘a’+“”;
方法四:String str=Character.toString(‘c’);
String和int,short,long,float,double之间的转换:
1、String→int: int a=Integer.parseInt(str);
如上, 类型 变量名 = 包装类.parse类型(String的名字);
2、int→String:String str=Integer.toString(int);
如上, String str = 包装类.toString(类型);
int和char之间的转换:
1、int→char:单个数字转换为char ch=(char)(48+int);
大于9的数字转化(int→String→char)
String str=Integer.toString(int);
char[] ch=str.toCharArray();
2、char→int:单个数字字符转化为int:int a=(int)(‘5’-48);
字符数组转化为int(char→String→int):
char []ch=new ch[]{‘1’,‘2’,‘3’}
String str=String.valueOf(ch);
int a=Integer.parseInt(str);
int和Integer之间的转换:
1、Integer→int:单个Integer类型数据进行转换:
Integer i=new Integer(5);
int in=i.intValue();
2、int→Integer:
int i=6;
Integer in=new Integer(i);
或者:
Integer in=Integer.valueOf(i);
其中,强制类型转化的顺序为:
byte→short→int→long→float→double
基本小概念
一些我平时比较困惑的概念差异
1.有的单词后面加(),有的不加,例如“.length和.length()”
需要加()的是方法(或者叫函数)
不加() 的叫属性
方法—通过执行 而 属性—通过访问
方法是对未知的东西去执行,求结果
属性是对已知的东西读取出来
例如:
String str=“ddd”;
str.length();//字符串长度
String []str1=new String[2];
int s=str1.length;//数组的容量
用到return语句时,要注意function()和 function 的区别,前者返回的是函数执行完的值, 后者直接返回的是函数(这个通常用于把函数当做参数传递另一个函数中去)。
针对数组提供了length属性来获取数组的长度
针对字符串提供了length()方法来获取字符串的长度
针对泛型集合类提供了size()方法来获取元素的个数
2.关于nextInt
nextInt()只读取数值,剩下"\n"还没有读取,nextLine()会读取"\n",并结束
如果想要在nextInt()后读取一行,就得在nextInt()之后额外加上in.nextLine()
3.关于空格和回车
\r回车是将光标移到一行的前面
\n是移到下一行
//java中nextInt()不会读取\n,,nextline()读入\n,但并不会成为返回的字符。
while(sc.hasNext()) {
String a=sc.nextLine();
int b=sc.nextInt();
System.out.println(a);
System.out.println(b);
}
上面这个例子,读入第二行之后,(数字+\r(未读入\n))还会剩余一个\n
则第二次输入时,nextLine会先读入\n,,导致第二次输入报错,所以应该在int后加一句 “String c=sc.nextLine()”
一些小方法
substring()方法
String num = “0123456789”;
String ab1 = num.substring(2, 6);// 2345
String a = num.substring(3);//3456789
取左不取右
int初始化为最小
int a=Integer.MIN_VALUE;
//这个是初始化为最小
//还有一件事!!!
System.out.println(a);
//-2147483648
int num=Math.abs(a);
//这个是取绝对值
System.out.println(num);
//-2147483648
最小的绝对值超出了最大的范围,比最大的大1,所以溢出以后变为最小值
因为最大值为2147483647,而绝对值为2147483648已经溢出,+1后变为最小值
数组排序
Arrays.sort(a); a为数组//按照升序排列。
产生随机数
产生10以内的随机数
int x = (int)(Math.random()*10);
精确到小数点后两位
DecimalFormat -> String
java.text.DecimalFormat df = new java.text.DecimalFormat("#.##");
double d = 3.14159;
System.out.println(df.format(d));
//java.math.BigDecimal
BigDecimal bd = new BigDecimal(“3.14159265”);
bd = bd.setScale(2,BigDecimal.ROUND_HALF_UP);
System.out.printf("%.2f", optimalPrice);
断言
public static void main(String[] args) {
String s = null;
assert s!=null?true:false;
assert false;
System.out.println(“end”);
}
assert [boolean 表达式]
如果[boolean表达式]为true,则程序继续执行。
如果为false,则程序抛出AssertionError,并终止执行。