zoukankan      html  css  js  c++  java
  • 数据结构

    第二章 数据结构

    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).代码示例:

    本文来自博客园,作者:小幸福Y,转载请注明原文链接:https://www.cnblogs.com/ljinw/p/14027745.html

  • 相关阅读:
    从零开始webpack4.x(五) js处理
    从零开始webpack4.x(四)样式loader
    从零开始webpack4.x(三)html插件
    从零开始webpack4.x(二)基础
    从零开始webpack4.x(一)介绍
    【转】react和vue渲染流程对比
    css3相关
    html5相关
    this指向
    整数划分问题(递归)
  • 原文地址:https://www.cnblogs.com/ljinw/p/14027745.html
Copyright © 2011-2022 走看看