Java基础——基础数据类型与读入输出
首先我们写完了HelloWorld就学会了java的一种输出
System.out.println()
用起来就像是被强化过的C++的puts函数
或者就是自带endl的cout函数,中间的" << " 直接用“ +”代替了
非常直观的一个输出函数,同理
System.out.print() 就是个不带endl的cout
再然后我们可以发现还有System.out.printf()
这个方法是和C++的printf基本一样的
这3个输出方法都是不需要导入任何库的
然后我们尝试拿java写简单题目
遇到的第一个困难就是如何读入数字
然后看别人的java代码就发现了一个东西
Scanner类!直接上怎么用!
1 import java.util.Scanner; 2 3 public class C { 4 public static void main(String []args) { 5 Scanner input = new Scanner(System.in); 6 int a = input.nextInt(); 7 double b = input.nextDouble(); 8 } 9 }
看起来System.in就像C++的stdin标准输入流
然后重定向一下,用不同的Scanner类中方法来读入
(上面是我脑补+口胡的...如有错误欢迎指出)
记得导入java.util.Scanner
然后读入数字的问题就解决了
接下来很快遇到了下一个问题
读入一个字符矩阵!
我们选择使用String数组来存储
那选择的方法呢?Scanner类中有方法nextLine()
其功能就类似于C++的getline,获取一行的读入并返回一个String类型
那么如何遍历String中的字符呢,很不幸对于String类的对象s
我们并不能像C++一样使用s[i] 来遍历元素
幸好String类中有方法 charAt()
s.charAt(i) 就起到了s[i] 的作用
那么这个问题就解决了。
最后是乱七八糟的碎碎念:
1.整数类型有byte, short, int, long,多了个byte比较猎奇...范围大小分别 2^8, 2^16, 2^ 32, 2^64
浮点型float, double, 倒是没有了肥肠奇妙的long double
整数数字默认为int类型,浮点数数字默认为double类型
所以给一个long类型变量赋初值,需要在数字最后面加上L,比如
long x = 123456789123456L;
2.奇妙的类型转换
整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算
从低级到高级可以实现自动类型转换
低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double
3.数据类型转换有几个规则...
(1)不能转换boolean类型...已经习惯了true当1, false当0的我非常难受...
(2)高级到低级必须强制类型转换,举个例子 short x = (short)233
这里233被默认为int类型,赋值给short类型的变量要经过这样的强制类型转换
(3)高级到低级的强制类型转换可能损失精度或者溢出
比如byte x = (byte)128 输出结果 x = -128 就是因为溢出
比如float x = (float)0.111111111111 输出 x = 0.11111111 就是损失了精度
(4)浮点数到整数是舍去小数得到,不是四舍五入!(int)4.9 = 4
(5)不能把对象类型转换成不相关类的对象
4.啊!Java没有逗号!超级难受!