JAVA基础

2021-04-09 java学习记录

1.强制类型转换
注意事项:
①强制类型转换可能发生精度损失,数据溢出,因此需保证转换时,数据值 在逻辑上不超过转换后的类型最大值
②byte/short/char 三种类型进行数学运算时先全部转成int
③boolean不发生任何类型转换

///
///
///

2.java中的引用数据类型
①枚举 enum关键字
用法一:
用作常量

public enum Spiciness {NOT,HOT,FLAMING};
public class Sim{
	public static void main(String[] args){
		Spiciness howHot=Spiciness.NOT;
		System.out.println(howHot);		
	}
}

注意,在创建enum时编译器会自动添加一些特性,例如创建toString方法,便于显示某个enum实例的名字;还会创建ordinal()方法,表示某个enum常量声明顺序;以及static values()方法,产生这些常量所组成的数组。

public class EnumOrder{
	public static void main(String[] args){
		for(Spiciness s:Spiciness.values()){
			System.out.println(s+" "+s.ordinal());
		}
	}
}

用法二:
用在switch中,switch是要在有限值集合中选择,与enum是绝配。

public class Burrito{
	Spiciness degree;
	public Burrito(Spiciness degree){ this.degree=degree;}
	public void describe(){
		switch(degree){
			case NOT:
			...
		}
	}
	public static void main(String[] args){
		Burrito plain=new Burrito(Spiciness.NOT);
		plain.describe();
	}
}

②类
③接口
④数组
具体的可以参看我另一篇博客

3.数组是什么:相同数据类型的集合,通过整型下标索引来访问数组元素。
//
//
①for each循环
java中功能很强的用来处理数组或其他元素集合的循环,这种循环不同考虑下标值。
for(variable :collection) statement;
注意collection集合必须是实现了Iterable接口的类对象或者数组。
//
//
②数组拷贝
java中允许一个数组变量拷贝到另一个数组变量,此时两个数组变量引用同一个数组。

int[] SmallPrimes={1,2,3,4,5};
int[] luckyNums=SmallPrimes;

深拷贝就得使用Arrays.copyOf方法;

int[] copiedLuckyNums=Arrays.copyOf(SmallPrimes,5);

//
//

Arrays类里相关函数:

static xxx[] copyOf(xxx[] a,int length);
static xxx[] copyOf(xxx[] a,int start,int end);

static int binarySearch(xxx[] a,xxx v);
二分查找,寻找数组中的v,返回下标,若没有返回负数值r;

static void fill(xxx[] a,xxx v);
将xxx[] a中所有元素置为v

static boolean equals(xxx[] a,xxx[] b);
判断相等。

//
//

4.输入与输出
①Scanner类
标准输入流;

Scanner in=new Scanner(System.in);
String nextLine()//读取下一行输入
String next()//读取下一个单词,space分隔符

//
//

②文件的输入输出P61

Scanner in=new Scanner("myfile.txt","UTF-8");
PrintWriter out=new PrintWriter("myfile.txt","UTF-8");

但要记住如果用一个不存在的文件名创建Scanner,或用无法创建的文件名创建PrintWriter会产生异常。此时可以在函数后面标记或用try-catch

public static void main(String[] args) throws Exception{
	Scanner in=new Scanner("myfile.txt","UTF-8");
}

//
//

5.带标签的break
如果确实需要使用goto语句,而且一个代码块在想要跳到的位置之前结束,可以使用这种break语句;

Scanner in=new Scanner(System.in);
int n;
read_data:
while(...){
	for(...){
		n=in.nextInt();
		if(n<0) break read_data;
	}
	
}

//
//
6.大数(java.math)
如果基本的整型与浮点型精度不能满足需求,java.math中的两个类BigInteger,BigDecimal,可以包含任意长度数字序列,实现任意精度

使用静态的valueOf()方法,可将数值转成大数;
BigInteger a=BigInteger.valueOf(100);
对于更大的数可以使用带字符窜参数的构造器:
BigInteger a=new BigInteger("12333333333334435421232432312");

但不能使用算术运算符处理大数,大数的运算有专门的函数

BigInteger s=a.add(b);
BigInteger d=c.multiply(b.add(BigInteger.valueOf(2)));

对于除法,如果商是无限循环小数,

BigDecimal divide(BigDecimal other);
会抛出异常,应使用
BigDecimal divide(BigDecimal other,RoundingMode mode);
指明舍入方式;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值