java基础之数据结构

java基础

1.Java语言基础(变量的概述及格式)

A:什么是变量

              在程序执行的过程中,在某个范围内其值可以发生改变的量(例如:苹果的价格)

              变量其实是内存中的一小块区域

       B:为什么要定义变量

              用来不断的存放同一类型的常量,并可以重复使用

       C:变量的定义格式

              数据类型变量名 = 变量值 ;

为什么有数据类型

              我们都知道,变量其实就是内存中的一小块区域。我们定义一个变量,其实就是开辟了一个内存空间。

              如果没有数据类型,那么我们需要开辟多大的内存空间合适呢?

              为了解决这种问题,java就给我们提供了不同的数据类型,那么针对不同的数据类型,在内存中分配了不同大小的内存空间。

      

2.Java语言基础(数据类型的概述和分类)

我们都知道,变量其实就是内存中的一小块区域。我们定义一个变量,其实就是开辟了一个内存空间。

              如果没有数据类型,那么我们需要开辟多大的内存空间合适呢?

              为了解决这种问题,java就给我们提供了不同的数据类型,那么针对不同的数据类型,在内存中分配了不同大小的内存空间。

基本数据类型的详细讲解

              (1):数值型

                            整数型                 字节数                 范围

                                     byte           1(8bit)          -128  ~  127

                                     short          2(16bit)            -2^15 ~  2^15 - 1

                                     int             4(32bit)          -2^31 ~  2^31 - 1

                                     long           8(64bit)          -2^63 ~  2^63 - 1

                            浮点数

                                    float      4(32bit)      -3.403*10^38  ~ 3.403*10^38

                                    double     8(64bit)   -1.798*10^308 ~ 1.798*10^308

              (2):字符型   char       2(16bit)      0 ~ 2^16 - 1 = 65535

              (3):布尔型  boolean    1

              整数默认是int类型的 , 浮点数默认是double类型的

Java中的默认转换规则(自动类型提升)

              (1):boolean类型不能转换为其他的数据类型

              (2):byte,short,char—int—long—float—double

              (3):byte,short,char之间不转换,他们参与运算首先转换为int类型

3.强制转换

A:强制转换问题的引入

              bytea = 3;int b = 4;byte = a + b;

              结果为在byte范围.要想将结果赋值给byte类型的变量,就需要使用强制类型转换.

              强制类型转换是将大的范围的数据转换成小的范围的数据.

       B:强制转换的格式

               目标数据类型 变量名=(目标数据类型)(被转换的数据);

       C:案例演示

              byte+ int 的结果赋值给byte,加强制类型转换

       D:强制转换的注意事项

              尽量不要使用强制类型转化,因为可能存在损失精度的问题。

3.变量相加和常量相加的区别

A:案例演示

              面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。

              byteb1 = 3;

              byteb2 = 4;

              byteb3 = b1 + b2;

              byteb4 = 3 + 4;

              byteb5 = 127 + 1;

              常量优化机制:编译器会做一个处理,计算3+4相加的值,如果在byte范围内,那么就不报错,如果不在byte范围内,就报错.

       B:Java语言中的字符char可以存储一个中文汉字吗?为什么呢?

              ASCII- GBK - gb2312 - Unicode - UTF-8

              可以。因为Java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字节。

              所以,Java中的字符可以存储一个中文汉字         

4.字符和字符串参与运算

A:案例演示

              System.out.println('a');

              System.out.println('a'+ 1);

              通过看结果知道'a'的值是多少,由此引出ASCII码表

       B:ASCII码表的概述

              记住三个值:

                     '0'  48

                     'A'   65

                     'a'    97

       C:案例演示

              System.out.println("hello"+ 'a' + 1);

              System.out.println('a'+ 1 + "hello");

              任何数在和字符串进行相加的时候,得到的结果都是一个新的字符串

              +号在这里表示的是字符串连接符

5.算术运算符的基本用法

       A:什么是运算符

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

       B:运算符的分类

              算术运算符         

              赋值运算符

              比较运算符

              逻辑运算符

              位运算符

              三目(元)运算符

       C:算数运算符有哪些

              +, - , * , / , % , ++ , --

       D:案例演示

              算数运算符的基本用法

       注意事项:

              a:整数相除只能得到整数。如果想得到小数,请使用浮点数

              b:/获取的是除法操作的商,%获取的是除法操作的余数

                %运算结果的符号,取决于参与运算是左边的符号

 

6.算术运算符++和--的用法

       A:++,--运算符的作用

              自加(++)自减(--)运算

              ++:自加。对原有的数据进行+1

              --:自减。对原有的数据进行-1

       B:案例演示

              a:单独使用:int x = 3; x++;

                     放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)

                    

              b:参与运算使用:int x = 3; int y = x++;

                     放在操作数的前面,先自增或者自减,然后再参与运算。

                     放在操作数的后面,先参与运算,再自增或者自减。

                     需要注意的是:++在前的时候运算的时候数据类型不发生转换

                     在进行计算的时候会通过一个中间的变量来进行赋值的操作来进行

 

7.算术运算符++和--的练习

 

       A:案例演示

              请分别计算出a,b,c的值?

              inta = 10;

              intb = 10;

              intc = 10;

 

              a= b++;

              c= --a;

              b= ++a;

              a= c--;

             

              结果       :

                     a=9

                     b=10

                     c=8

 

       B:案例演示

              请分别计算出x,y的值?

             

              intx = 4;

              inty = (x++) + (++x) + (x*10);

             

              x=6, y=70

 

 

8.赋值运算符的基本用法

       A:赋值运算符有哪些

              =, +=,-=,*=,/=,%=

       B:案例演示

              赋值运算符的基本用法

              inta = 34;

              a+= 26;

       注意事项:

              a:基本的赋值运算符:=

                     把=右边的数据赋值给左边。

              b:扩展的赋值运算符:+=,-=,*=,/=,%=

                     +=把左边和右边做加法,然后赋值给左边。

              c:赋值运算符要求左边的数据必须是一个变量

                     5=3;

 

9.赋值运算符的面试题

 

       A:案例演示

              面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。

              shorts = 1 ; s = s+1;

              shorts = 1 ; s += 1;    

       B:注意事项

              关于几个扩展的赋值运算符,存在一个隐式的强制类型转换.

 

10.关系运算符的基本用法及其注意事项

 

       A:关系运算符有哪些

              ==,!= , < , > , <= , >= , instanceof(后面讲解)

       注意事项:

              无论你的操作是简单还是复杂,结果是boolean类型。

              "=="不能写成"="。

              "<="表示的是小于或者等于

       B:案例演示

              关系运算符的基本用法

      

11.逻辑运算符的基本用法

       A:逻辑运算符有哪些

              &(并且) , |(或者) , !(非) ,^(异或) , &&(短路与) , ||(短路或)

       注意事项:

              a:逻辑运算符一般用于连接boolean类型的表达式或者值。

                     在Java中我们要表示一个数大于3并且小于6,不可以写成3<x<6,应该写成 x>3& x<6 。

              b:表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子。

                     算术表达式:a + b

                     关系表达式:a == b

       B:案例演示

              逻辑运算符的基本用法

       C:结论:

              &逻辑与:有false则false。

              |逻辑或:有true则true。

              ^逻辑异或:相同为false,不同为true。

              !逻辑非:非false则true,非true则false。

                     特点:偶数个不改变本身。

 

12.逻辑运算符&&和&的区别

       A:案例演示

              &&和&的区别?

                     a:最终结果一样。

                     b:&&具有短路效果。左边是false,右边不执行。

 

       B:同理||和|的区别?

       C:开发中常用

              &&,||,!

 

13.位运算符的基本用法1

       A:位运算符有哪些

              &(与),|(或),^(异或) , ~(按位取反) ,<<(左移) ,>>(右移),>>>(无符号右移)

              注意事项:位运算是直接对二进制补码进行运算。

       B:案例演示

              &,|,^,~的用法

              结论:

                     &:有0则0

                     |:有1则1

                     ^:相同则0,不同则1

                     ~:按位取反

      

14.位异或运算符的特点及面试题

       A:案例演示

              位异或运算符的特点

                     inta = 10;    

                     intb = 20;    

                     a^ b ^ b

                     a^ b ^ a

              ^的特点:一个数据被另一个数据位异或两次,该数本身不变。

       B:面试题:

              请自己实现两个整数变量的交换(4种方式)

                     1.使用第三方变量(画图演示),开发中使用

                     2.使用位异或运算符的特点,面试中使用  

                            左边 a,b,a

                            右边 a ^ b

                     3.使用和的方式

                     4.b= (a + b) - (a = b);

 

              注意:以后讲课的过程中,我没有明确指定数据的类型,默认int类型。

 

15.位运算符的基本用法2及面试题)

       A:案例演示

              <<:左移               空位补0,被移除的高位丢弃。

              >>:右移               被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,所有高位补1。

              >>>:无符号右移  被移位二进制最高位无论是0或者是1,空缺位都用0补。

       B:结论:

              <<: 把<<左边的数据乘以2的移动次幂

              >>: 把>>左边的数据除以2的移动次幂

       C:面试题:

              最有效的方式算出2乘以8等于几?

      

16.三元运算符的基本用法

       A:三元(三目)运算符的格式

              (关系表达式) ? 表达式1 : 表达式2;

       B:三元运算符的执行流程

              计算关系表达式的值,如果为true, 运算后的结果是表达式1;

                                            如果为false,运算后的结果是表达式2;

       C:案例演示

              获取两个数中的最大值

 

三元运算符的练习

       A:案例演示

              比较两个整数是否相同

       B:案例演示

              获取三个整数中的最大值

      

运算符的优先级

 

   A:从数学中的运算符优先级引出java中运算符也需要优先级

   B:看运算符的优先级表,总结出Java中运算符的优先级顺序

        注意事项:

       (a)算术运算符优先级最高

           位移运算符

           比较运算符

           逻辑运算符

           赋值运算符优先级最低。

       (b)如果在程序中,要改变运算顺序,可以使用括号()

 

 

--练习

(基础数据类型在栈,里面直接分配内存,而引用数据则是通过堆里的对象来对栈中的内容进行引用)

基本数据类型由低级到高级分别为:(byteshortchar->int -> long -> float -> double

(此处的“级别”是指表示值的范围的大小)

题目:switch语句能否作用在byte上,能否作用在long上,能否作用在String上?

答:在switch(expr1)expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本数据类型或者int的包装类Integer,由于byteshortchar都可以隐式转换为int,所以这些类型以及他们的包装类也是可以用switch的。显然,longString类型都不能被隐式转换为int类型(long可以强制转换为int,但是会丢失精度),所以他们不能作用于swtich语句中

题目:Short s1 = 1s1 = s1+ 1;有什么错?Shorts1 = 1s1+= 1;有什么错?为什么?

 

 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Diligently_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值