Java基础(2)----数据存储,基本运算,方法函数

java基础(2)---- 数据存储,基本运算,方法函数

1.数据存储

1.1内存:内存是计算机中的重要原件,临时存储区域,作用是运行程序。我们编写的程序是存放在硬盘中的,在硬盘中的程 序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存。 Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。

1.2内存分配:

方法区(特殊的堆):存储类信息,静态变量,静态方法,字符串常量等不变的数据

堆:存储对象,数组本身

栈:存储基本数据类型,局部变量,引用    

                                                       

                                                                                                             图1、内存分区存储图解

 

1.3内存管理概述:程序的内容按类型分区存储在各区的内存空间,并为可能参与赋值的内容标记内存地址,同时为待赋值的变量分配地址空间指向对应值的地址空间。

示例代码运行的内存分析及图解参考博客(https://blog.csdn.net/lgl782519197/article/details/90609572

 

2.基本运算

2.1运算前提:Java程序要求参见运算的数据,必须保证取值范围一致,如果不一致需要先进行数据类型转换。

2.1.1数据类型转换前提:数据类型的的取值范围不等同于数据的字节数,在参与运算时byte,short,char直接被提升为int型,所以取取值范围划分如:

byte,short,char--->int--->long--->float--->double

具体的,char类型通过编码表查询得到对应的ASCII码换成int。

如:在char类型和int类型计算的过程中,char类型的字符先查询编码表得到97,将char提升为了int类型,再和1求和,结果为98。

                                                             

                                                                                                                图2、char+int数据装换图解

 

2.1.2自动转换:将取值范围小的类型,自动提升为取值范围大的类型。

2.1.3强制转换:将取值范围大的数据类型,手动强制转换成取取值范围大道的类型。

  • 强制装换格式:
数据类型1 变量=(数据类型1)数据类型为2的数据
//(其中数据类型2取值范围大于数据类型1)
  • 数据溢出:超过转换后的数据类型的最大取值范围会使数据损失变小,没超过没事。

       精度损失:超多转换后的数据类型的最大精度范围会使精度损失,比如double强制转换为int型会损失小数部分。

 

2.2基本运算类型:

2.2.1算术运算:

  •  
算数运算符 
+加法运算,字符串连接
-减法运算
*乘法运算
/除法运算
%取模运算,两个数字相除取余数
++,--自增自减运算

                                                                                                                      表1、算数运算符

  • 自增自减运算:

独立运算:++a与a++,--a与a--没有区别。

混合运算: 为其它变量赋值,两者有区别。 ++a :变量a先加1,将加1后的结果赋值给其他变量。a++:变量a先给其他变量赋值,再加1。

小于整型数据取值范围数据的自增运算:

(1)short类型数据:

public static void main(String[] args){
 short s = 1; 
 s+=1; 
 System.out.println(s);
 }

   运行结果:      

                                                                       

                                                                                                        图3、short型数据自增运算

分析: s += 1 逻辑上看作是 s = s + 1 计算结果被提升为int类型,再向short类型赋值时发生错误,因为不能将取值范围大的类型赋值到取值范围小的类型。但是,+= 是一个运算符,只运算一次,并带有强制转换的特点。 也就是说 s += 1 就是 s = (short)(s + 1) ,因此程序没有问题编译通过,运行结果是2.

(2)char类型数据:

public static void main(String[] args){
 short s = 1; 
 s+=1; 
 System.out.println(s);
 }

    运行结果:

                                                                    

                                                                                                          图4、char型数据自增运算

分析: 同理,s += 1 就是 s = (char)(s + 1) ,因此程序没有问题编译通过,运行结果是b.

 

  • 字符串连接: + 符号在遇到字符串的时候,表示连接、拼接的含义。 "a"+"b"的结果是“ab”,

 

2.2.2赋值运算:即将符号右边的值,赋给左边的变量。

  •  
赋值运算符 
=等于号
+=加等于
-=减等于
*=乘等于
/=除等于
%=取模等

                                                                                                                   表2、赋值运算符

 

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

  •  
逻辑运算符 
&&短路与

两边为true,结果为true

短路特点:符号左边是false,右边不再计算,结果是false

||短路或

两边为false,结果是true

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

!取反

!true结果是false

!false结果是true

                                                                                                                   表3、逻辑运算符

 

2.2.4比较运算:比较运算符,是两个数据之间进行比较的运算,运算结果都是布尔值 true 或者 false 。

  •  
比较运算符 
==比较符号两边数据是否相等,想等结果是true
<比较符号左边的数据是否小于右边的数据,如果小于结果是true
>比较符号左边的数据是否大于右边的数据,如果大于结果是true
<=比较符号左边的数据是否小于或者等于右边的数据,如果小于结果是true
>=比较符号左边的数据是否大于或者等于右边的数据,如果小于结果是true
!=不等于符号,如果符号两边的数据不相等,结果是true

                                                                                                                表4、逻辑运算符

  • 注意:a<b<c不是规范的命令语句,计算机只会执行a<b就结束了,有上下界的比较应表达为a<b&&b<c。

 

2.2.5三元运算

  • 语句格式:
数据类型 变量名 = 布尔类型表达式?结果1:结果2
  • 三元运算符计算方式: 布尔类型表达式结果是true,三元运算符整体结果为结果1,赋值给变量。 布尔类型表达式结果是false,三元运算符整体结果为结果2,赋值给变量。

 

3.方法函数:将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。

3.1方法定义

  • 定义格式:
修饰符 返回值类型 方法名 (参数列表){
            代码... 
            return ; 
 }
  • 定义原则:

方法定义的先后顺序无所谓。

方法只能定义在类里面,另一个方法里面。

 

3.2 方法重载:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关。

  参数列表:个数不同,数据类型不同,顺序不同。

  重载方法调用:JVM通过方法的参数列表,调用不同的方法。

如:System.out.println()方法可以打印任何数据类型,是基于println() 方法对于每一种数据类型都做了方法重载。

 

3.3 方法调用:方法在定义完毕后,在主方法中调用方法,方法才会执行。

     调用方法的几种方式:

  • 直接调用:同类中直接写方法名调用;调用异类中的方法用对象名调用,static修饰静态方法用类名调用。
  • 赋值调用:调用方法,在方法前面定义变量,接收方法返回值。
  • 输出语句调用: 在输出语句中调用方法, System.out.println(方法名()) 。不能用输出语句调用 void 类型的方法。因为方法执行后没有结果,也就打印不出任何内容。

 

 

附表:

                                                           

                                                           

                                                           

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值