Mosh_Java笔记 P1-2
- 基本数据类型(8个)
byte boolean short long float double char int
几个注意
float = 3.14F;后面要加F
long int = 4324132412L后面要加L - 引用类型
除了基本数据类型都是引用类型
eg:Date now = new Date();
//引用类型需要使用new操作符来分配该对象的内存
基本类型没有任何成员
而引用类型可以通过.操作符调用对象所属类的成员方法等
基本数据类型与引用类型的内存管理
String
-
String类型的初始化可以不用new,可以直接String message = "Hello World!"
-
String类型的一些方法
- 返回boolean值
endwith("!!") 是否以两个!!结尾,同理有startwith(); - message.length(),返回字符串长度
- message.indexOf("He")检查一个字符串中是否有某些字符或字串,返回起始下标
- message.repalce("!","")将字符串中的!替换为
- parameters are the holes that we define in our methods
- arguments are the actual values that we pass 传递的实际值
例如
target和replacement是parageters,即形参
而!和*是arguments,即实参
***注意,替换后的字符串是一个新的字符串,原来的字符串没有改变,这是因为字符串是不可变的,任何对字符串的修改都会返回一个新的字符串对象
- message.toLowerCase();将字符串全部小写,toUpperCase();同理
- message.trim();修剪掉字符串开头和结尾的多余空格
- 转义字符(常用4个)
- \n换行
- \t 插入一个tab
- \一个反斜杠,比如"Mosh"\ 输出的是“Mosh”
- \两个反斜杠,比如"c:\windows\...",输出的是c:\windows...
Array
-
如果定义一个数组nums -> int [] nums = new int[5]
给其前两个位置赋值 nums[0] = 1;nums[1] = 2; -
倘若要输出该数组,print(nums)打印出来的并不是数组的值,而是这一串连续地址空间的首地址值,当然首先可以想到通过遍历数组来输出数组的值,for掉num[i],因为num对象被创建时,经类加载和对象初始化后,成员变量被重新赋值,访问num[0]时是从堆内存中访问的,所以输出的不是地址值而是值。
-
另一 种方法是利用Arrays.toString()方法返回该数组,可用Arrays.sort为数组排序
多维数组
定义int [][] nums1 = new int[2][3]
初始化赋值nums1[0][0] = 1
二维数组赋值
int[][] nums = {{1,2,3},{4,5,6}};
多维数组的输出需要用到deepToString即Arrays.deepToString(nums1);
常量
用final修饰
算数表达式
-
整数除整数的结果是整数
-
x++和++x在单独的情况是相等的
如果有变量赋值才会有区别
y=x++,先将x值赋给y,再增加
y=++x是x先自增1,再赋值给y -
强制转换
自动转换(不会有精度的丢失byte->short->int ->long ->float ->double)
隐式强制转换(不会丢失数据和精度)
显式强制转换(比如double x = 1.1,显式转换为int,会有数据和精度的丢失)
简而言之,在类型兼容的前提下(比如int和double等兼容,而int和string不兼容)
如果不会有数据和精度的丢失,则会发生自动转换,而如果会发生精度减小的转化则需要用到显式转换。 -
字符串和数字的转换 可以用到包裹类型的parseInt(String)方法
如Integer.parseInt(x); -
Math类
- Math.round - 返回一个四舍五入值
- Math.ceil - 返回一个大于该数的最小整数
-Math.max(a,b) - 返回两个数里大的一个数
-Math.min(a,b) - 返回两个数里小的一个数
-Math.random() - 返回一个(0,1)的随机数
int result = Math.round(Math.round(Math.random));
生成一个(1,100)的随机数字
-
格式化数字
NumberFormat()是一个抽象函数
但可以通过获取实例化方法来,
例如NumberFormat currency = NumberFormat.getCurrencyInstance();方法中,=右边的就是获取货币实例化的方法,返回的结果是一个数字格式的对象。我们不能通过new来实例化,但可以通过这样的方法来获取对象,其中蕴含的设计模式是工厂模式
shift+f6重命名变量
method chaining
***********NumberFormat.getCurrencyInstance().format(x);
-读写
Scanner scanner. = new Scanner (System.in);
String name = scanner.nextLine().trim;//可以对这一行输入的字符进行操作