Java基本数据类型+包装类

Java基本数据类型+包装类

这一博客简单的介绍一下Java的基本数据类型以及数据的运算、类型转换、赋值

今晚补齐,稍安勿躁。

基本数据类型对应包装类

基本类型 包装类(java.lang)
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character

#包装类支持的常量和方法:
MAX_VALUE:获取相对应基本类型的最大值
MIN_VALUE:获取相对应基本类型的最小值
parseXXX(String str):可以将字符串转转为对应的基本类型数据
进制

bit位、byte字节、

进制转换【系数、基数、权】、八进制0、十六进制0x

原码、反码、补码

运算符运算
  1. 算术运算符

    +  -  *  /  %(取余)  ++  --
    
  2. 赋值运算符

    =  +=  -=  *=  /=  %=
    
  3. 比较运算符,false|true

    >  >=  <  <=  ==  !=
    
  4. 逻辑运算符,一错全错|全对才对

    &(与)并且  |(或)或者  !(非)否则  短路与&&  短路或||
    
  5. 三目运算符,结果二选一

    A=B?C:D
    
类型转换

包装类、基本数据类型、字符串、数组

基本类型和包装类互转
#jdk1.5新特性:自动拆装箱
int num = Integer.valueOf(1); //自动拆箱(Integer->int)  通过valueOf(xx)方法生成对应的包装类
Integer num1 = 1;             //自动装箱(int->Integer)
#包装类转换为基本类型数据:xxxValue()
Double d = new Double(1.1);       //此处的1.1是double类型的字面量,通过new的方式生成对应的包装类
double dou = d.doubleValue();     //通过xxxValue()方法生成对应的基本类型
同种类型相互转换:大范围 <==> 小范围
#向下转型/强转  #向上转型/自动转
Object[] arr = new Object[10];
arr[0] = Integer.valueOf(1);    //向上转型(Integer->Object)   
Integer i = (Integer)arr[0];    //向下转型(Object->Integer)
arr[1] = 2;                     //jdk1.5之后合法(原因:自动拆装箱)
数字转换为大类型:double =>BigDecimal int=>BigInteger
#BigDecimal也支持valueOf()方法   加:add() 减:subtract() 乘:multiply() 除:divide()
#BigInteger也支持valueOf()方法   加:add() 减:subtract() 乘:multiply() 除:divide()

BigDecimal d1 = BigDecimal.valueOf(3.0);   //通过valueOf(xx)方法生成对应的大类型
BigDecimal d2 = BigDecimal.valueOf(2.6);
BigDecimal d3 = d1.subtract(d2);
字符串转换为数字:String =>int String =>double
#字符串转换为基本类型数据:parseXXX(String str)  注意:字符串的格式必须要完全匹配基本类型的值
String doubleStr = "12.3";                //字符串String
double d = Double.parseDouble(doubleStr); //浮点型double
字符串转换为数组:String =>char[] String =>String[] String =>byte[]
#字符串转换为char数组:String.toCharArray()
String str = "123abc";                //字符串
char[] arr = str.toCharArray();       //char数组

#字符串转换为String数组:String.split()
String str = "123abc";
String[] arr = str.split("");
for (int i = 0; i < arr.length; i++) { // String数组
    System.out.print(arr[i]);          // 输出 1 2 3 a b c
}

#字符串转换为byte数组:String.getBytes()
String str = "123abc" ;					//字符串
byte [] arr = str.getBytes();			//byte数组

使用 split() 方法注意如下:
如果用“.”或“|”作为分隔的话,必须是如下写法,String.split("\.") 或 String.split("\|"),这样才能正确的分隔开,不能用 String.split(".") 或 String.split("|")。
如果在一个字符串中有多个分隔符,可以用“|”作为连字符,如“acount=? and uu =? or n=?”,把三个都分隔出来,可以用 String.split(“and|or”);
数组转换为字符串:String[] =>String char[] =>String
#String字符串数组转化为字符串:通过字符串拼接
String[] arr = { "123", "abc" };
StringBuffer sb = new StringBuffer();
for (int i = 0; i < arr.length; i++) {
    sb.append(arr[i]);        // String并不拥有append方法,所以借助 StringBuffer
}
String sb1 = sb.toString();
System.out.println(sb1);      // 输出123abc

#char字符数组转化为字符串:String.copyValueOf(charArray) 
char[] arr = { 'a', 'b', 'c' };
String string = String.copyValueOf(arr);
System.out.println(string);    // 输出abc

#common-lang3的jar包:StringUtils.join()
String[] str = { "1", "2", "a", "b" };
StringUtils.join(str);         // 将数组变成字符串
StringUtils.join(str, ",");    // 将数组用逗号分隔变成字符串
时间和时间互转:String =>Date =>Calendar =>Date =>String
#字符串时间转换为Date时间:SimpleDateFormat("日期格式").parse(str)
String str = "2008-08-08 20:08:08";				                     	  //时间字符串
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  	  //转换类
Date date = sdf.parse(str);						                     	  //Date时间
#Date时间转换为Calendar时间:calendar.setTime(date)
Calendar calendar =Calendar.getInstance();  							  //Calendar时间
Date date = new Date();													  //Date时间
calendar.setTime(date);													  //Calendar时间
#Calendar时间转换为Date时间:calendar.getTime()
Calendar calendar = Calendar.getInstance();   							  //Calendar时间
Date date = calendar.getTime();               							  //Date时间
#Date时间转换为字符串时间:SimpleDateFormat("日期格式").format(date);
Date date = new Date();													  //Date时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");  //转换类
String str1 = sdf.format(date);											  //时间字符串
流程赋值

流程:if、switch、where、do where、for、for for

控制:continue、break、return

循环
#水仙花数(三位数中各位数字的立方和等于该数本身)
public static void main(String[] args) {
	int count = 0;//计数器
	for(int i = 100;i<=999;i++) {
		int gw = i%10;
		int sw = i/10%10;
		int bw = i/100;
		if(gw*gw*gw+sw*sw*sw+bw*bw*bw==i) {
			count++;
   		    System.out.println(i+"是水仙花数");
   		}
	}
	System.out.println("水仙花数有"+count+"个");
}
#乘法口诀表
public static void main(String[] args) {
	for(int i = 1;i<=9;i++) {//控制行数
		for(int j = 1;j<=i;j++) {//控制列数
			System.out.print(j+"*"+i+"="+i*j+'\t');
		}
		System.out.println();
	}
}
#百钱百鸡(5元公鸡、3元母鸡、1元三只小鸡)
public static void main(String[] args) {
	for(int x = 0;x<=20;x++) {//表示公鸡数
		for(int y = 0;y<=33;y++) {//表示母鸡数
			if(5*x+3*y+(100-x-y)/3==100&&(100-x-y)%3==0) {   //钱数一百,小鸡整只
				System.out.println("公鸡:"+x+",母鸡:"+y+",小鸡:"+(100-x-y));
			}
		}
	}
}
#随机两个整数的平方和等于50
public static void main(String[] args) {
	Random rd = new Random();
	int x,y;
	int count = 0;
	do {
		x = rd.nextInt(10);//[0,9]
		y = rd.nextInt(10);
		count++;
	}while(x*x+y*y!=50);
	System.out.println(x+","+y);
	System.out.println("循环了"+count+"次");
}
三目
#奇偶
int num = 5;
String str = num%2==0?(num+"是偶数"):(num+"是奇数");
#分页(总行数rows,行数size,页数pages)
int rows=101; 
int size=10;
int pages = rows%size==0?rows/size:rows/size+1;
#三目嵌套:等级ABC
int score =59;
char grade = score>=90?'A':(score<60?'C':'B');
判断
#比较大小,顺序输出(从小到大)
if(a>b) {
	int temp = a;
	a = b;
	b = temp;
}
System.out.println(a+","+b);
#成绩,对应的等级,判定奖学金的金额
public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入一个百分制成绩:");
	int score = sc.nextInt();
	String level = "";
	switch(score/10) {
		case 10:
		case 9:level = "优秀";break;
		case 8:level = "良好";break;
		case 7:level = "中等";break;
		case 6:level = "及格";break;
		default:level = "不及格";break;
	}
	System.out.println("等级:"+level);
	int bonus;
	switch(level) {
		case "优秀":bonus = 2000;break;
		case "良好":bonus = 500;break;
		case "中等":bonus = 50;break;
		default:bonus = 0;break;
	}
	System.out.println("奖学金:"+bonus+"元");
}
累加
#累加:计算PI值(3.1415926……):PI=4*(1-1/3+1/5-1/7+1/9-1/11+1/13-1/15...)
double sum = 0;
for(int i = 1;i<=1000001;i+=4) {
	double n = 1.0/i-1.0/(i+2);
	sum += n;  					//相当于sum = sum+n;
}
System.out.println(sum*4);
递归
#递归:斐波那契数
public static long f(int n) {
	if(n==1||n==2) {
		return 1;
	}
	return f(n-1)+f(n-2);
}
双色球
import java.util.Arrays;
import java.util.Random;

public class DoubleColorBalls_v1 {
	/**
	 * 双色球随机选号
	 * 1.红球:01~33里面随机的取出6个,
	 *   不能重复,按顺序排序(升序)
	 * 2.篮球:01~16里面随机的取出1个
	 */
	public static void main(String[] args) {
		//红球池
		String[] redPools = {"01","02","03",
				"04","05","06","07","08","09",
				"10","11","12","13","14","15",
				"16","17","18","19","20","21",
				"22","23","24","25","26","27",
				"28","29","30","31","32","33"};
		//定义一个用于存放红球的数组(球管)
		String[] balls = new String[6];
		//创建一个Random随机对象
		Random rd = new Random();
		int i = 0;
		while(true) {
			//随机下标
			int index = rd.nextInt(redPools.length); 
			//通过随机下标取出一个红球并放置到球管中
			balls[i] = redPools[index];
			//让红球池中最后一个元素覆盖掉取出的元素
			redPools[index] = 
					redPools[redPools.length-1];
			//通过缩容的方式删除红球池最后一个元素
			redPools = 
				Arrays.copyOf(redPools,redPools.length-1);
			i++;
			//当球管中放满6个红球,循环结束
			if(i==6) {
				break;
			}
		}
		Arrays.sort(balls);
		System.out.println(Arrays.toString(balls));
		//篮球池
		String[] bluePools = {"01","02","03",
				"04","05","06","07","08","09",
				"10","11","12","13","14","15",
				"16"};
		//取出一个随机的篮球
		String blueBall = 
				bluePools[rd.nextInt(16)];
		//把球管扩容一位
		balls =
			Arrays.copyOf(balls,balls.length+1);
		//把篮球放置到球管的最后一个位置
		balls[balls.length-1] = blueBall;
		System.out.println(Arrays.toString(balls));
	}
}
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class DoubleColorBalls_v2 {
	public static void main(String[] args) {
		/*
		 * 需求:
		 * 控制台输入你要购买的注数,
		 * 打印对应注数的双色球号码
		 */
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入你要购买的注数:");
		int num = sc.nextInt();
		for(int i = 0;i<num;i++) {
			System.out.println(Arrays.toString(gen()));
		}
	}
	//将随机生成一注双色球号码的代码封装成方法
	public static String[] gen() {
		//红球池
		String[] redPools = {"01","02","03",
				"04","05","06","07","08","09",
				"10","11","12","13","14","15",
				"16","17","18","19","20","21",
				"22","23","24","25","26","27",
				"28","29","30","31","32","33"};
		//定义球管
		String[] balls = new String[6];
		//创建Random随机对象
		Random rd = new Random();
		//给每一个红球贴一个标签,标签的初始状态为false
		boolean[] flags = new boolean[33];
		int i = 0;
		do {
			//随机下标
			int index = rd.nextInt(33);
			//取红球前判断红球对应的标签状态
			//如果标签状态为true,结束当次循环
			if(flags[index]) {
				continue;
			}
			//通过随机下标取出红球放置到球管中
			balls[i++] = redPools[index];
			//取出红球后,把对应的标签状态改为true
			flags[index] = true;
		}while(i!=6);
		Arrays.sort(balls);
		//将球管扩容一位存放篮球
		balls = Arrays.copyOf(balls,7);
		balls[6] = redPools[rd.nextInt(16)];
		return balls;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java基本数据类型包装类Java中用来表示数据的两种不同方式。 1. 基本数据类型(Primitive Data Types): - Java基本数据类型有8种:byte、short、int、long、float、double、char和boolean。 - 这些基本数据类型直接存储着数据的值,它们是直接操作内存的,因此效率较高。 - 基本数据类型不具有任何方法,不能调用任何方法。 2. 包装类(Wrapper Classes): - 包装类是用来将基本数据类型包装起来,以便能够以对象的形式使用。 - Java提供了对应于每种基本数据类型包装类:Byte、Short、Integer、Long、Float、Double、Character和Boolean。 - 包装类提供了许多有用的方法,可以进行类型转换、比较、运算等操作。 - 包装类是不可变的(immutable),即一旦创建就无法修改其值。 区别: - 基本数据类型是直接存储数据的值,而包装类是将基本数据类型包装成对象。 - 基本数据类型效率较高,而包装类的效率较低,因为需要进行对象的创建和销毁操作。 - 基本数据类型不能调用任何方法,而包装类提供了许多有用的方法。 - 包装类可以用于泛型、集合类等需要对象作为参数的场景,而基本数据类型则不能直接使用。 - 基本数据类型在内存中占据的空间大小是固定的,而包装类的内存消耗较大,因为需要额外存储一些信息。 总的来说,基本数据类型适合用于简单的数据操作,而包装类适合用于需要更多功能和灵活性的场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值