JavaSE-Day02

1.数据类型

1.1 数据类型分类

Java中的数据类型分为基本数据类型和引用数据类型

基本数据类型

是Java语言中内置的类型,分别是整数类型、浮点类型、字符类型、布尔类型。这四类基本类型是最简单、最基础的类型。

引用数据类型

是强大的数据类型,它是基于基本数据类型创建的。JavaSE中提供了一个超级类库,类库中包含了近万种引用数据类型。不过现在我们先要学习的是基本类型!

1.2 基本数据类型表示

整数类型

十进制表示方式:正常数字 如 13、25等

二进制表示方式:以0b(0B)开头 如0b1011 、0B1001

八进制表示方式:以0开头 如01、07、0721

十六进制表示方式:以0x(0X)开头 数字以0-9及A-F组成 如0x23A2、0xa、0x10

浮点数类型

如1.0、-3.15、3.168等

布尔类型

true,false

字符类型

如'a','A', '0', '家'

注意:字符必须使用’’ 包裹,并且其中只能且仅能包含一个字符。

1.3 基本数据类型占用大小和表示范围

四类八种占用字节数数据表示范围

   整型

(精确)

byte1-128~127
short2-32768~32767
int(默认)4-2147483648~2147483647
long8-2^63~2^63-1

   浮点型

(不精确)

float4-3.403E38~3.403E38
double(默认)8-1.798E308~1.798E308
字符型char2表示一个字符
布尔型bollean1只有两个值true与false

2.常量和变量

2.1常量

定义:不变的数据量

分类:

 2.2变量

1.定义:在程序中可以变化的量

2.格式:数据类型 变量名 = 数据值     例:int a = 100

public static void main(String[] args) {
		// byte类型变量
		byte b = 100;
		System.out.println(b);
		
		//short类型变量
		short s = 100;
		System.out.println(s);
		
		//int类型变量
		int x = 100;
		System.out.println(x);
		
		//long类型变量
		long num = 100L;
		System.out.println(num);
		
		//float类型变量
		float f = 2.0F;
		System.err.println(f);
		float f2 = 2.0f;
		System.out.println(f2);
				
		//double类型变量
		double d = 3.14;
		System.out.println(d);
		double d2 = 3.14d;
		System.out.println(d2);
		double d3 = 3.14D;
		System.out.println(d3);
		
		//char类型变量
		char c = 'a';
		System.out.println(c);
		
		//boolean类型变量
		boolean flag = true;
		System.out.println(flag);
	}

 变量定义后可以不赋值 使用时再赋值 不赋值不能使用 使用前必须先赋值

public static void main(String[] args) {
		int x;
		x = 20;  //下面要使用变量x x必须先赋值
		System.out.println(x);
}

 变量不能重新定义 并且赋值时类型要匹配

public static void main(String[] args) {
	int x = 20;  // 定义一个int类型变量x
	//int x = 30;  //编译报错, 不能重复定义一个x变量
	x =30; // 正确,表示给x重新赋值
	//x = "abc"; //编译报错,赋值时,类型要匹配
}

 变量使用时有作用域的限制

public static void main(String[] args) {
		int a= 100;
		{
			int b = 200;
			System.out.println(a);
			System.out.println(b);
		}
		//System.out.println(b);  // 编译报错,这里不能访问到变量b
	}

3.数据类型转换

3.1数据类型转换

数据类型转换分为自动类型转换和强制类型转换

自动类型转换:小类型——>大类型

           格式:范围大的数据类型 变量 = 范围小的数据类型值

强制类型转换:大类型不能转换为小类型 但通过强制类型转换可以实现

            格式:范围小的数据类型 变量 = (范围小的数据类型) 范围大的数据类型值

转换规律:

各种数据类型按照数据范围从小到大依次列出:范围小的类型向范围大的类型提升

byte<short=char‐‐>int‐‐>long‐‐>float‐‐>double

byte、short、char 运算时直接提升为int

3.2类型转换案例 

1.计算一年有多少毫秒(一年按365天计算)

public class Demo01 {
    public static void main(String[] args) {
        long result = 365L*24*60*60*1000;
        System.out.println(result);
    }
}

2.整数的除法运算 

public class Demo02 {
    public static void main(String[] args) {
        int x = 10;
        int y = 4;

        int result = x/y;
        System.out.println(result); // 2

        double result2 = x/y;
        System.out.println(result2); //2.0;

        double result3 = (double)x/y; // 把x强转成double
        System.out.println(result3); //2.5

        double result4 = 1.0*x/y;
        System.out.println(result4);
    }
}

3.浮点数 四舍五入取整 四舍五入取两位小数

public class Demo03 {
    public static void main(String[] args) {
        double x = 3.4665;
        //四舍五入取整数
        int result = (int)(x+0.5);
        System.out.println(result);

        // 四舍五入取保留两位小数
        double result2 = (int)(x*100+0.5)/100.0;
        System.out.println(result2);
    }
}

4.字符集

4.1常见字符集

ASCII字符集&编码

ASCII一共定义了128个字符,包括33个控制字符,和95个可显示字符。大部分的控制字符已经被废弃。

GB2312字符集&编码

GB2312 或 GB2312–80 是中华人民共和国国家标准简体中文字符集,共收录6763个汉字,同时收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个字符,基本满足了汉字的计算机处理需要。它所收录的汉字已经覆盖中国大陆99.75%的使用频率,但对于人名、古汉语等方面出现的罕用字和繁体字,GB2312不能处理

 GBK字符集&编码

汉字内码扩展规范,称GBK,GBK的K为汉语拼音Kuo Zhan(扩展)中“扩”字的声母

GB2312只收录6763个汉字,有不少汉字,如部分在GB2312推出以后才简化的汉字(如“啰”),部分人名用字(如中国前总理朱镕的“镕”字),台湾及香港使用的繁体字,日语及朝鲜语汉字等,并未有收录在内。GBK对GB 2312-80进行扩展,GBK对GB 2312-80进行扩展, 总计拥有23940个码位,共收入21886个汉字和图形符号,其中汉字(包括部首和构件)21003 个,图形符号883 个。

Unicode字符集

Unicode(中文:万国码、国际码、统一码、单一码)是计算机科学领域里的一项业界标准。它对世界上大部分的文字系统进行了整理、编码,使得电脑可以用更为简单的方式来呈现和处理文字。其中最常用的编码为utf-8

4.2几个特殊意义的字符

\ 转义字符  
\’ 表示 单引号
\\  表示  \

\n   换行
\t   tab  制表符

4.3练习

在控制台输出完成水果超市价格表如下图

public class Demo04 {
    public static void main(String[] args) {
        System.out.println("水果编号\t水果名称\t水果单价\t计价单位\t品质");
        System.out.println(1+"\t榴莲\t"+32.0+"\t公斤\t"+"A");
        System.out.println(2+"\t苹果\t"+6.5+"\t公斤\t"+"B");
        System.out.println(3+"\t猕猴桃\t"+6.0+"\t公斤\t"+"A");
    }
}

5.运算符

5.1概述

对常量和变量进行操作的符号称为运算符

5.2分类

算术运算符 赋值运算符 关系运算符 逻辑运算符 三元运算符

5.2.1算术运算符

public class Demo05 {
    public static void main(String[] args) {
        int result1  = 1+2;
        int result2 = 3-1;
        int result3 = 3*2;
        int result4 = 3/2;
        int result5 = 3%2;  // 取模 (余数) -------> 判断能不能整除

        System.out.println(result1);     //3
        System.out.println(result2);    //2
        System.out.println(result3);    //6
        System.out.println(result4);    //1
        System.out.println(result5);    //1
        
        int x = 100;
        int y = 3;
        int result6 = x+y;
        int result7 = x/y;
        int result8 = x%y;
        System.out.println(result6);  //103
        System.out.println(result7); //33
        System.out.println(result8); // 1
        
        // ++(递增)   --(递减)
        int a = 1;
        //a++;
        ++a;
        System.out.println(a);  //3
    }

++a:先加1再赋值

a++:先赋值再加1

public static void main(String[] args) {
		int a = 1;
		//int b = ++a;//a:2 b:2 注意:++在前表示先计算++  再赋值
		int b = a++;//a:2 b:1 注意:++在后表示先赋值  再计算++
		System.out.println(a);
		System.out.println(b);
}

5.2.2赋值运算符

所谓赋值运算符,就是将符号右边的值,赋给左边的变量

public static void main(String[] args) {
		int a = 5;
		int b = 2;
		
		a+=2; // a= a+2;
		System.out.println(a); //7
		
		a-=1; // a = a-1;
		System.out.println(a); //6
		
		a*=2; // a = a*2;
		System.out.println(a); //12
		
		a/=2; a = a/2;
		System.out.println(a); //6
		
		a%=2; a= a%2;
		System.out.println(a); //0
	}

5.2.3关系运算符

关系运算符,是两个数据之间进行比较的运算

运算结果都是布尔值true(正确的,真的,满足条件的) 或者false(错误的,假的,不满足条件的)

public static void main(String[] args) {
int a = 2;
int b = 1;
System.out.println(b>a);  // true
System.out.println(b>=a);  // true
System.out.println(b<a);  // false
System.out.println(b<=a);  // false
System.out.println(b==a);  // false
System.out.println(b!=a);  // true
}

5.2.4逻辑运算符

逻辑运算符,是用来连接两个布尔类型结果的运算符,运算结果都是布尔值true 或者false

public static void main(String[] args) {
/*	    int x = 5;
		int y = 3;
		
		int a = 10;
		int b =8;
		
		System.out.println(x>y & a>=b);  // true & true = true
		System.out.println(x>y & a<b);   // true & false = false
		System.out.println(a<b & x>y);   // false & true = false
		System.out.println(a<b & x<y);   // false & false = false
		
		System.out.println(x>y | a>=b);  // true | true = true
		System.out.println(x>y | a<b);   // true | false = true
		System.out.println(a<b | x>y);   // false | true = true
		System.out.println(a<b | x<y);   // false | false = false
		
		System.out.println(x>y ^ a>=b);  // true ^ true = false
		System.out.println(x>y ^ a<b);   // true ^ false = true
		System.out.println(a<b ^ x>y);   // false ^ true = true
		System.out.println(a<b ^ x<y);   // false ^ false = false
*/
	
/*	
		int x = 5;
		int y = 3;
		
		int a = 10;
		int b =8;
		
		System.out.println(!(x>y));  // false
		System.out.println(!(x<y));  // true
		
		System.out.println(x>y && a>=b);  // true && true = true
		System.out.println(x>y && a<b);   // true && false = false
		System.out.println(a<b && x>y);   // false && true = false
		System.out.println(a<b && x<y);   // false && false = false
		
		System.out.println(x>y || a>=b);  // true || true = true
		System.out.println(x>y || a<b);   // true || false = true
		System.out.println(a<b || x>y);   // false || true = true
		System.out.println(a<b || x<y);   // false || false = false
	*/
}

短路功能的&&和||

&& 短路与

短路特点:符号左边是false,右边不运算

|| 短路或

短路特点: 符号左边是true,右边不运算

结论:实际开发中都是使用短路与&&和短路或||,因为效率更高

int x = 5;
int y = 3;
		
int a = 10;
int b =8;
/*
System.out.println(x<y & a++<b);  // false
System.out.println(a);  // 既是第一个表达式是false 也会计算第2个表达式  也就是执行了a++ a的值变为11
*/
System.out.println(x<y && a++<b);   // false
System.out.println(a);  //10   第一个表达式是false了结果就直接为false 不会执行第2个表达式 也就是没有执行a++ a的值还是10

 5.2.5三元运算符

三元运算符格式:

数据类型 变量名 = 布尔类型表达式?值1:值2

三元运算符计算方式:

布尔类型表达式值是true时,三元运算符整体值为值1,赋值给变量。

布尔类型表达式值是false时,三元运算符整体值为值2,赋值给变量。

int a = 5;
int b = 8;
		
int result = a<b?a:b;
System.out.println(result);  // 判断a大于b吗  如果a大于b 把 a赋给result  反之把b赋给result

 练习:交换两个变量的值

// 使用临时变量
public static void main(String[] args) {
       int a = 1;
       int b = 2;

       int temp = a;
       a = b;
       b = temp;

        System.out.println(a);
        System.out.println(b);
    }

//不使用临时变量
public static void main(String[] args) {
       int a = 1;
       int b = 2;

       int sum = a+b;
       a = sum - a;
       b = sum - a;
       System.out.println(a);
       System.out.println(b);
    }

//采用和的方式
public static void main(String[] args) {
       int a = 1;
       int b = 2;

       b = a+b-(a=b);
       System.out.println(a);
       System.out.println(b);
    }

 5.2.6键盘录入scanner类

使用步骤:

1.定义变量,并相应类型的对象赋值给变量:

数据类型 变量名 = new 数据类型();

如:Scanner scanner = new Scanner(System.in);

2.导包:

使用import导包,告诉JVM从哪里去找Scanner类

3.调用Scanner对象方法:

变量名.方法名();

import java.util.Scanner;
public class Demo24_键盘输入 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int x = sc.nextInt();  //代码执行到这一步时,会阻塞(停住) 等着键盘从控制台输入,输入完成后回车,把输入的值赋给了x
		System.out.println("键盘输入的值为:"+x);
		double y = sc.nextDouble();
		System.out.println("键盘输入的浮点数值为:"+y);
	}
}

5.2.7位运算符

任何信息在计算机中都是以二进制的形式保存的,”&”、“|”、“^”除了可以作为逻辑运算符也可以作为位运算符。位运算是直接对二进制进行运算。

& 参加运算的两位数都为1,&运算符结果才为1,否则就为0。

| 参与运算的两位都为0,|运算的结果才为0,否则就为1。

左移<<

右移>>

最快的运算是位运算

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值