Java学习_Day2

基本数据类型(续)
a. 当long类型数据的值超过int的范围时候,需要在数据后面添加L或者l标记该数据是一个long类型
b. 当小数赋值给float的时候,必须在数据的后面添加f或者F,标记是单精度,因为小数数据默认为double,赋值给float的时候有一点的损失
c. double的数据后面加不加D都可以

转义字符
\n 换行
\t tab键的效果
\“ 引号

public class Dome1{
	public static void main(String[] args){
		System.out.println("宝宝\n我love你");
		System.out.println("123\t123");
		System.out.println("这个很重要:\"我爱宝宝\"");
	}
}

在这里插入图片描述
进制转换
二进制
逢二进一 0 1 10 …
八进制
逢八进一 0 1 2 3 4 5 6 7 10 11 …
十进制
逢十进一 0 1 2 3 4 5 6 7 8 9 10 11 …
十六进制
逢十六进一 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11…

基本类型转换
a.自动转换(小到大)

byte a=10;
int b=a;
System.out.println(b);
b.强制转换(大到小)---->强转有一定的精度损失
	(需要转换的数据类型)大类型的变量名
int a=11;
byte b=(byte)a;
System.out.println(b);

基本类型之间的大小顺序(boolean不参与转换)
整型<浮点型
byte<short<int<long<float<double
char<int

char类型有2中赋值方式
①直接赋值(单引号)

char a='b';
char a='爱';
②	赋值ASCLL码值(65535以内)
char a=97
char b=29233; //爱

String转化与基本类型转化不一样(后面学习)

运算符
①算术运算符
+ - * / % ++ –
+
1.加法的加
+的两端都是数值类型(整型,浮点型,字符型)
2.连接符
+ 当两端出现字符串的时候(以后可以把别的基本类型 +”“转化为字符串)
-
1.减法的减号
2.负数的符号
*
1.乘法的乘号
/
1.当两端都是整数类型的时候 求商
2.当两端出现浮点类型的时候 求准确值
%
1.求余数

练习一:输出下列表
注意以后代码我会在eclispe里面写
在这里插入图片描述

public class buy {
	public static void main(String[] args) {
		java.util.Scanner sc =new java.util.Scanner(System.in);
		//定义变量
		String[] name = {"T恤","网球鞋","网球拍"};
		double[] unitPrice = {245,570,320};//单价
		int[] num = new int[name.length];//数量
		for (int i = 0; i < name.length; i++) {
			System.out.print("请输入购买"+name[i]+"数量:");
			num[i]=sc.nextInt();
		}
		double rental = 0;//总额
		double money = 0;//钱
		System.out.print("请输入你付的钱的数额:");
		money=sc.nextDouble();
		System.out.println("* * * * * * * *消费单* * * * * * * *");
		System.out.println("购买物品"+"  "+"单价"+"  "+"个数"+"  "+"金额");
		for (int j = 0; j < name.length; j++) {
			System.out.println(name[j]+"  "+"¥"+unitPrice[j]+"  "+num[j]+"  "+unitPrice[j]*num[j]);
			rental+=unitPrice[j]*num[j];
		}	
		System.out.println("折扣:"+"     "+8+"折");
		System.out.println("消费总金额:"+"     "+"¥"+rental*0.8);
		System.out.println("实际缴费金额:"+"     "+"¥"+money);
		System.out.println("找零金额:"+"     "+"¥"+(money-rental*0.8));
		System.out.println("本次购物积分:"+"     "+((int)(rental*0.8/100))*3);
	}
}

在这里插入图片描述
练习二:随机生成4位数,求各位数的和
提示:Math.random();//随机生成一个[0-1)的数

方法一:以我们学习的知识


public class Test1 {
	public static void main(String[] args) {
		int num=(int)(Math.random()*9000+1000); //[1000,10000) 保证了四位数
		System.out.println("这个数是:"+num);
		int a1=num%10;
		int a2=num/10%10;
		int a3=num/100%10;
		int a4=num/1000;
		System.out.println(a1+a2+a3+a4);
	}
}

在这里插入图片描述
方法二:写一个方法,调用方法(可以保留小数位随机选择,这里是4位小数)


import java.math.BigDecimal;

public class NumAdd {
	public static void main(String[] args) {
		double random = Math.random();
//		double random=0.71239;
		BigDecimal b = new BigDecimal(random);//把double类型转化为BigDecimal
		BigDecimal num=b.setScale(4,BigDecimal.ROUND_DOWN);//只保留四位小数
		System.out.println(num);
		double doubleValue = num.doubleValue();//把BigDecimal转化为double
		int a = (int) (doubleValue*10000);//强转		
		for(;DaffodilNumber.count(a)!=4;) { //判断最后*10000后是否是4为数  DaffodilNumber为自定义函数,count返回值为数位
			random = Math.random();
			 b = new BigDecimal(random);
			 num=b.setScale(4,BigDecimal.ROUND_DOWN);
			System.out.println(num);
			 doubleValue = num.doubleValue();
			 a = (int) (doubleValue*10000);
		}
		System.out.println("最后=="+num);
		
		System.out.println(a);
		int daffodilNumber = DaffodilNumber.daffodilNumber(a);//DaffodilNumber为自定义函数,daffodilNumber分裂数位
		System.out.println();
		System.out.println(daffodilNumber);
	}


}




public class DaffodilNumber {
	/**
	 * 数位分裂
	 * @param num
	 * @return
	 */
	public static int daffodilNumber(int num) {
//		boolean flat = false;
		int add=0;
		int count=DaffodilNumber.count(num);
				
		int[] b =new int[count];//定义数组
		
		for(int i=0;i<b.length;i++,count--) {
			
			int num1= (int) Math.pow(10, count-1);

			b[i]=(int)num/num1;
			if(num>10) {
				num=num-b[i]*num1;
			}
		}
		for (int i : b) {
			System.out.print("*****"+i);
		add+=i; 
		}
		return add;
//		return flat;
	}
	
	
	/**
	 * 数位计算器
	 * @param num
	 * @return
	 */
	public static int count(int num) {
		int count=0; //计数器
		int temp=num;//中间量
		while (temp>=1) { //判断数位
			temp/=10;
			count++;	
		}
		return count;
	}
}


在这里插入图片描述
++
1.++在前

int i=10;
int j=++i; //①i的值先自增 ②再把i的值赋值给++i; ③将++i的值赋值给j
System.out.println("i="+i); //11
System.out.println("j="+j); //11
		2.++在后
int i=10;
int j=i++; //①先把i的值赋值给i++ ②i在自增; ③将i++的值赋值给j
System.out.println("i="+i); //11
System.out.println("j="+j); //10
	--
	同++一样

练习:
1.写出下面的结果

public class TestSign{
    public static void main(String[] args){
        int i1 = 10;
        int i2 = 20;
        int i = i1++;
        System.out.print(“i=+i);//10
        System.out.println(“i1=+i1);//11
        i = ++i1;
        System.out.print(“i=+i);//12
        System.out.println(“i1=+i1);//12
        i = i2--;
        System.out.print(“i=+i);//20
        System.out.println(“i2=+i2);//19
        i = --i2;
        System.out.print(“i=+i);//18
        System.out.println(“i2=+i2);//18
    }
}

2.写出下面的结果

	int i=5;
	int j=10;
	int k=i++ + ++j;//从左到右  4+11
	System.out.println(k);//16
	int h=i++ + i+j;//6+7+11
	System.out.println(h); //24
②关系运算符  结果都为boolean类型
>	 >= 	< 	<=	 == 	!=
	1. >	 >= 	< 	<=  的两端为数值类型
int a=10;
System.out.println(a>6);  //false
	2.  == 	!=   可以为boolean类型
boolean a=true;
System.out.println(true!=false);  //true
③赋值运算符
= 		+=		-=		*=		/=		%=
int a=10;
a+=6;  //a=a+6
a*=8;  //a=a*8;
a%=3;  //a=a%3;
④逻辑运算符
并且   :同真为真,一假为假
		 &&(短路与)  
			前面的不成立,则不执行后面的
	&
		前面的不成立,则不执行后面的
int a=10;
boolean flst=(a>15&&a++>9);
System.out.println(flst);  //false
System.out.println(a);  //10
int b=10;
boolean falt=(b>15&b++<9);
System.out.println(falt);  //false
System.out.println(b);  //11
或者 :同假为假,一真为真
		||(短路或)
			前面的成立,则不执行后面的
		|
			前面的不成立,则不执行后面的
int a=10;
boolean flst=(a>1||a++>19);
System.out.println(flst);  //true
System.out.println(a);  //10
int b=10;
boolean falt=(b>1|b++<19);
System.out.println(falt);  //false
System.out.println(b);  //11
 非 
		! 取反 
异或:相同为假,不同为真
	^ 
int a=10;
boolean flst=(a>1^a++>19);
System.out.println(flst);  //true
System.out.println(a);  //11
int b=10;
boolean falt=(b>1^b++<9);
System.out.println(falt);  //false
System.out.println(b);  //11
⑤三目运算符
语法:  条件?语句1:语句2;
int a=10;
double b=20;
System.out.println(5>3?a:b);  //10.0  注意类型转换
⑥位运算符 (了解)
主要了解	 <<(左移)			>>(右移)这两个
二进制运算
System.out.println(5<<2);  //相当与5*2^2  20
System.out.println(8>>2);  //相当于8/2^2  2

现在不考虑负数, 负数涉及源码,反码,补码

运算符的优先级
在这里插入图片描述
提示说明:

(1)表达式不要太复杂

(2)先算的使用()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值