第二天学Java

第二天学Java,第1张

第二天学Java 变量、数据类型表达式及运算符 一、变量
  • 概念:在计算内存中一块小的存储空间,用于存储数据,是存储数据的基本单元

  • 变量的组成部分:

    ​ (1)数据类型:决定了变量在jvm内存中的空间大小

    ​ (2)变量名:为了方便查找该内存空间

    ​ (3)数据:可以通过变量名进行存储或是查找数据

  • 变量的定义:

    (1)先声明再赋值:
    	声明 : 数据类型 变量名;
    	赋值 :  变量名 = 值;
    (2)声明的同时并赋值:
    	数据类型 变量名 = 值;
    注意:在同一个类中,变量名不要重名
    (3)一次性定义多个同类型的变量:
    	数据类型 变量名1,变量名2 = 值,变量名3;
    
    package day2;
    
    public class Test{
    	public static void main(String[] args){
    	
    				//声明	
    				//存储整数: int
    				int a;
    				a=5;
    				System.out.println(a);
    				int c,d=8,f;
    				c=23;
    				f=69;
    				System.out.println(d);
    				System.out.println(c);
    				System.out.println(f);
    				
    
    	}
    }
    
二、数据类型
	1B = 8b(bit简称b,称为 位/比特位)
	1kB = 1024B
	1MB = 1024KB
	1GB = 1024MB
	1TB = 1024GB

3. 1. 注意:Java是一种强类型的语言,对应的数据必须存储在对应的变量中

      1. 基本数据类型(原始数据类型、简单数据类型)

         ```
         (1)整数类型
         	byte		1B		-128 ~ 127
         	short		2B		-32768 ~ 32767
         	int 		4B		-2147483648 ~ 2147483648
         	long		8B		-922京 ~ 922京-1
         	
         	注意:long的字面值需要加l或是L(建议使用L,区分数字1和l)
         	字面值:程序中可以给某种类型变量赋的值
         (2)小数类型(浮点类型)
         	double		8B		双精度
         	float		4B		单精度
         	
         	注意:float字面值后面必须加f或F,不能省略
         		 double字面值后面可以加d或D,可以省略
         	float类型超过精度后会将后面几位四舍五入,一共保存七位即可
         	double类型精度会更高,大概在16位保证正确
         	
         	float和double都可以采用科学计数法的方式进行存储,采用近似值
         	   double ds = 12345678912.34;// 1.234567891234E10
         	4Bfloat存储的范围要比8B的long存储的数据范围更大,原因:Java中浮点底层可以采用科学计数法的形式存储(近似值),float相对于long是大数据类型
         (3)字符类型
         	char	2B
         	Java中的字符字面形式有以下三种:
         		a.单引号('')直接引起来的一个字符
         				char c ='A';
         				char c2 = '中';
         				char c3 = '+';
         				char c4 = '8';//0~9之间的每个数字可以作为一个字符
         		b.可以以整数形式作为char字面值,整数范围是0~65535(29233--爱)
         				char c1=48;//字符0
         				char c2=65;//字符A
         				char c3=97;//字符a
         		c.以十六进制的unicode形式进行存储
         				char c ='u0041';//等价于 十进制的65,存储'A'字符
         	Java中的转义字符:
         		n		换行
         		t		水平跳格
         		\		反斜杠
         		'		单引号
         		"		双引号 
         (4)布尔类型
         	boolean		1B		字面值 true/false
         	注意:Java中true代表成立(某种关系)
         			  false代表不成立
         		Java中boolean中字面值只能是true/false;
         			区分于c语言中的boolean(0/1)
         ```

         

      2. 引用数据类型(对象数据类型)

   ```
   数组、对象、接口、集合等都是引用类型(对象类型)
   目前以String的应用来讲解 引用数据类型:
   String:字符串用双引号("")引起来的一个或是多个字符
   		String s1 = "hello";
   		String s2 ="a";
   		String s3 = "孙朝卿";
   ```

   ```
   例题:
   姓名		String name
   年龄		int age
   成绩		double/int score
   性别		boolean sex=true;  char c='女'; String s = "男";
   电话		String tel(方便校验);long l=1312321545l;
   身份z号   String id;(不能用long,有的身份z号最后一位会存在x)
   地址		String address
   商品的数量 int shu
   商品的价格 double price
   ```

   ## 三、数据类型的转换

   1. 自动类型提升

   ```
   (1)应用场景:将小数据的变量赋值给大数据类型的变量,可与直接赋值
   			注意:存储数据范围越大,对应的数据类型为大数据类型
   (2)语法:
   		源数据类型   变量名 = 值;//byte b = 6;
   		目标类型 变量名 = 源数据类型的变量;//int a = b;
   		注意:目标类型大于源数据类型可以直接赋值 
   (3)自动类型提升的规则(小数据类型赋值大数据类型 )
   	a.byte->short->int->long->float->double
   	b.char->int->long->float->double
   	
   	面试题目:分析以下代码编译是否通过,不通过说明原因?
   			char c = 95;//编译通过
   			
   			int i = 65;
   			char cs = i;//编译不通过,错误原因违反自动类型提升规则
   ```

   2. 强制类型转换

   ```
   (1)应用场景:将大数据类型的变量赋值给小数据类型的变量,必须通过强制类型转换
   (2)语法:
   		源数据类型 变量名 = 值 ;//double d =3.6;
   		目标类型 变量名 = (目标类型)源数据类型的变量;
   		int i = (int)d;
   (3)强制转化结果:
   	a.如果将float/double浮点类型的数据强制转换为整数,则小数点后面的部分直接截断
   		double d = 3.6;
   		int i = (int)d;//3
   	b.强转的大数据类型变量中存储的数据在小数据类型的变量的范围内,则不会影响内容
   	c.强转的小数据类型变量中存储的数据不在小数据范围内,则从底层存储低位进行截断
   		int i = 257;
   		byte b = (byte)i;//1
   ```

## 四、表达式
1. 表达式:由变量、字面值、运算符等连接组成的式子,通常有一个结果

2. 对于表达式结果的处理方式:(根据实际开发需求来决定)

   (1)如果对结果只使用一次,直接在使用的地方写表达式即可

   (2)如果对结果多次使用,建议定义一个对应类型变量进行存储

3. 表达式结果对应变量存储规则

   (1)如果表达式中有double,则结果为double

   (2)如果表达式中有float,则结果为float

   (3)如果表达式中有long,则结果为long

   (4)其余情况,结果都是int

   ​		byte和byte

   ​		byte和short

   ​		short和short

   ​		int分别和short  byte

   ```
   面试题目:写出以下代码编译是否正确,正确写出结果,不正确分析原因
   		byte b=1;
   		b=b+1;//int b2=b+1;
   分析:编译报错,原因是b=b+1结果类型是int类型,需要存储在int类型的变量中
   ```

## 五、运算符

1. 算术运算符

   ```
   +  -  *(乘法)  /(除法)  %(取模,取余)
   注意:+ 在Java中有两种使用方式:
   		第一种情况:+两端都为数值类型,为加法运算
   		第二种情况:+两端只要有一端为String类型,此时的+为字符串拼接功能;则结果类型一定是String类型
   		System.out.println(a+"hello"+b);//5hello2
   		System.out.println(a+b+"hello");//7hello
   		System.out.println(a+true+"hello");//编译错误
   		System.out.println(a+"hello"+true);//ahellotrue
   		System.out.println(a+b+"hello"+true);//7hellotrue
   		System.out.println("hello"+true+a+b);//hellotrue52
   ```

   

2. 赋值运算符

   ```
   = :直接赋值
   += :求和之后再赋值
   -= :求减之后赋值
   *=  /=   %=  
   注意:+=在应用层没有自动类型提升 
   		byte b=1;
   		b= b+1;//结果为2
   		//底层:byte+1-->int,再强转(byte)(b+1)
   ```

3. 一元运算符

   ```
   ++(自增) 			--(自减)
   int c =a++;先使用a原始数据,作为表达式的结果,然后再将a加1
   		  先使用再加1运算
   		  int c = a; a = a+1;
   int cc= ++a;先对a变量自身加一,然后再使用加一之后的结果作为表达式的结果
   		   先加一,在使用
   		   a = a+1; int c = a;
   实际开发应用:通常使用a++/a--/++a/--a 让a变量的内容随着循环 *** 作自身发生改变,最多使用a++
   ```

4. 关系运算符

   ```
   两个 *** 作数进行比较
   >大于		>=大于等于		<小于		<=小于等于		==等于		!=不等于
   注意:由关系运算符连接的表达式结果为布尔类型,所以被关系运算符连接的表达式称为布尔表达式;true-关系成立false-关系不成立
   ```

5. 逻辑运算符

   ```
   连接两个结果类型为boolean类型的表达式
   &&:逻辑与,两端连接的布尔表达式结构都为true,最终结果为true
   		  只要有一段结果为false,最终结果为false [短路运算符]
   ||:逻辑或,两端连接的布尔表达式的结果只要有一端为true,最终结果为true
   		  两端同时为false,最终结果才为false
   !:逻辑非,对原来的布尔表达式结果进行取反
   -----------------------------------------------------------------------
   &:逻辑与,两端连接的布尔表达式结果都为true,最终结果为true[非短路]
   |:逻辑或,两端连接的布尔表达式的结果只要有一端为true,最终结果为true
   		  两端同时为false,最终结果才为false
   面试题目:写出&&和&区别
   		&&:短路运算符:第一个布尔表达式结果为false,则后面的布尔表达式不再执行
   		&:非短路运算符:不管第一个布尔表达式的结果为true/false,后面的布尔表达式都必须执行
   注意:在开发时,需要用到逻辑与运算符时,如果可以使用&&也可以使用&,则通常采用&&,提升执行效率
   ```

6. 三元运算符

   ```
   (1)结构:
   		布尔表达式?表达式1:表达式2
   (2)执行原理:?之前的布尔表达式结果为true,则执行表达式1,否则执行表达式2
   (3)案例:
   int a = 8;
   	int r = a>9?a+1:a-1;
   	System.out.println(r);
   	System.out.println(a<6?a+3:a-3) ;
   ```


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5695414.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存