数据结构

第二章 数据结构

  1. 标识符(biao zhi fu)
  • 包,类,变量,方法等只要是起名字的地方,那个名字就是标识符

  • 标识符定义规则:

  • a.由数字,字母,下划线_,美元符号$组成

  • b.不可以以数字开头,不可以使用Java中的关键字

  • c.见名知意:增加代码的可读性

  • d.大小写敏感

  • e.驼峰命名法:

    ​ (1).类名:首字母大写,其余遵照驼峰命名法

    ​ (2).方法名,变量名:首字母小写,其余遵循驼峰命名

    ​ (3).包名:全部小写,不遵循驼峰命名

  • f.长度无限制,但是不建议太长

2.关键字:被赋予特殊含义,有专门的用途的单词;Java中所以关键字都为小写

​ 官网地址:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html

3.常量和变量:

常量通常指的是一个固定的值,例如:1、2、3、’a’、’b’、true、false、”helloWorld”等。

在Java语言中,主要是利用关键字final来定义一个常量。 常量一旦被初始化后不能再更改其值。

为了更好的区分和表述,一般将1、2、3、’a’、’b’、true、false、”helloWorld”等称为字面常量,而使用final修饰的PI等称为符号常量(字符常量)。

(1).常量分为两种:

字面常量的类型:

​ 注意:逻辑常量就两个值,一个是true,一个是false

(2).变量本质上就是代表一个”可操作的存储空间”,空间位置是确定的,但是里面放置什么值不确定。我们可通过变量名来访问“对应的存储空间”,从而操纵这个“存储空间”存储的值。Java是一种强类型语言,每个变量都必须声明其数据类型。变量的数据类型决定了变量占据存储空间的大小。 比如,int a=3; 表示a变量的空间大小为4个字节。变量作为程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储空间。

​ 【1】变量声明格式:

​ type varName [=value][,varName[=value]...]; //[ ]中的内容为可选项,即可有可无

​ 数据类型 变量名 [=初始值] [,变量名 [=初始值]…];

​ 案例:

	int  age   = 19 , age2 = 90  ; 
	int  age,age2; 

​ 【2】变量的声明:

​ (1)如果你只定义一个变量,没有给变量进行赋值的话,那么其实这个变量相当于没有定义:

​ (2).我们自己定义的时候直接就可以用一句话定义:

	int age = 10; 
	变量的值可以更改: 
		public class TestVar01{
				public static void main(String[] args){
							//变量的声明(定义变量)(以年龄为案例讲解)
							//java是一个强类型的语言,只要声明变量就必须定义类型:定义整数类型
							int age ; //定义一个整数类型的变量,变量名字为age 
									//对变量进行赋值操作:
							age = 10; //变量名字为age,具体的值为10 
							age = 12;
							age = 20;
							age = age + 4;
							age = 9;
							age = 9;
							System.out.println(age);
					}
		}

​ (3).变量不可以重复定义:

​ (4).变量的使用:

			public class TestVar01{
					public static void main(String[] args){
							//变量的声明(定义变量)(以年龄为案例讲解)
							//java是一个强类型的语言,只要声明变量就必须定义类型:定义整数类型
							int age ; //定义一个整数类型的变量,变量名字为age 
							//对变量进行赋值操作:
							age = 10; //变量名字为age,具体的值为10 
							age = 12;
							age = 20;
							age = age + 4;
							age = 9;
							age = 9;
							System.out.println(age);
							System.out.println(age-2);
							System.out.println(age+10);
							int num = age + 66;
							System.out.println(num);
					}
			}
			扩展: 
			
				public class TestVar02{
						public static void main(String[] args){
								int a = 10;
								int b = 20;
								int c = a + b ;
				   }
				}

【5】变量的内存:

【6】习题:

					public class TestVar03{
							public static void main(String[] args){
									int num1 = 10;
									int num2 = 20;
									num1 = num2;
									num2 = num2 + 10;
									num1 = num2 - 10;
									num2 = num1;
									System.out.println("num1="+num1);
									System.out.println("num2="+num2);
							}
					}

​ 内存分析:

【7】变量的作用域:

​ 作用域指的就是作用范围,变量在什么范围中有效

​ 作用范围就是离它最近的{}

​ 备注:代码不要去运行,会出错

						/*
						局部变量:定义在方法中
						成员变量:定义在类中,方法外
						*/
						public class TestVar04{
								int b = 20;
								public static void main(String[] args){
										System.out.println(a);//no
										int a = 10;
										System.out.println(a);//yes
										System.out.println(b);//yes
										{
												int c = 40;
												System.out.println(c);//yes
												int a = 50;//属于变量的重复定义
										}
										System.out.println(c);//no
								}
								public void eat(){
										System.out.println(b);//yes
										System.out.println(a);//no
										int a = 30;//不是变量的重复定义,变量有作用域
										System.out.println(a);//yes
						        }
				   }

4.基本数据类型

​ (1).整型:

​ (2).浮点型:

        float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。 

        而double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型。 

        float类型的数值有一个后缀F或者f ,没有后缀F/f的浮点数值默认为double类型。 

        PS:有效数字指的是从左开始第一个不为0的数到最后一个数.

(3).char类型:

(4).boolean类型有两个常量值,true和false,在内存中占一位(不是一个字节),不可以使用 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。 boolean类型用来判断逻辑条件,一般用于程序流程控制 。

5.每一个八进制位可以等价替换为三个二进制

​ 每一个十六进制可以等价替换成四个二进制

​ 八进制06743 = 006743 = 110111100011

​ 十六进制0x9E3 = 09e3=100111100011

​ 2^0=1

​ 2^1=2

​ 2^2=4

​ 2^3=8

​ 在使用二进制表示数字的收,一个字节中最高位(左侧)不是用来表示数字大小的,

​ 而是用来表示数字正负的,0代表正数,1代表负数.

​ 有的数据存储和运算,都是以补码的形式进行的,将数据计算出结果,对结果再进行补码

​ 原码:二进制表示形式,就是原码

​ 反码:正数的反码与原码相同;负数的反码就是原符号位不变,其他按位取反

​ 补码:正数的补码与原码相同;负数的补码是反码+1

​ 进行两数运算时:

​ 两个操作数有一个为double,计算结果提升为double

​ 如果操作数中没有double,有一个为float,计算结果提升为float

​ 如果操作数中没有float,有一个为long,计算结果提升为long

​ 如果操作数中没有long,有一个为int,计算结果提升为int

​ 如果操作数中没有int,均为short或byte,计算结果仍旧提升能够为int

​ 特殊:任何类型与String相加时,实为拼接,其结果自动体上升为String

6.类型转换

​ 【1】什么是类型转换:

​ 在赋值运算或者算数运算的时候,要求数据类型一致,就要进行类型的转换。

​ 【2】类型转换的种类:

​ 自动转换,强制转换

​ 【3】内存演示:

【4】代码:

	public class TestVar10{
			public static void main(String[] args){
					//类型转换的两种形式:
					double d = 6;//int-->double  自动类型转换
					System.out.println(d);
					int i = (int)6.5;//double--->int  强制类型转换 (强转)
					System.out.println(i);
					
					//在同一个表达式中,有多个数据类型的时候,应该如何处理:
					//多种数据类型参与运算的时候,整数类型,浮点类型,字符类型都可以参与运算,唯独布尔类型不可以参与运算
					//double d2 = 12+1294L+8.5F+3.81+'a'+true;
					double d2 = 12+1294L+8.5F+3.81+'a';
					System.out.println(d2);
					/*
					类型级别:(从低到高的)
					byte,short,char-->int--->long--->float--->double
					级别用来做什么?当一个表达式中有多种数据类型的时候,要找出当前表达式中级别最高的那个类型,然后
					其余的类型都转换为当前表达式中级别最高的类型进行计算。
					double    d2 = 12+1294L+8.5F+3.81+'a';
								= 12.0+1294.0+8.5+3.81+97.0
													*/
					int i2 = (int)(12+1294L+8.5F+3.81+'a');
					System.out.println(i2);
					/*
							在进行运算的时候:
							左=右  : 直接赋值
							左<右  :强转
							左>右  :直接自动转换
					*/
					//以下情况属于特殊情形:对于byte,short,char类型来说,只要在他们的表数范围中,赋值的时候就不需要进行
					//强转了直接赋值即可。
					byte b = 12;
					System.out.println(b);
					byte b2 = (byte)270;
					System.out.println(b2);
					}
		}

7.控制台输入:

(1).import报名.类名;//将外部class文件的功能引入到自身文件中

​ importjava.util.Scanner;

​ 声明Scanner类型的变量

​ 使用Scanner类中对应的方法(区分类型):

​ .nextInt();获取整数

​ .nextDouble();获取小数

​ .next();获取字符串

​ .next().charAt(0);获取单个字符

​ 如果输入了不匹配的数据,则会产生java.util.ImputMismatchException

(2).代码示例:

posted @ 2020-11-23 22:55  小幸福Y  阅读(121)  评论(0编辑  收藏  举报