JAVA基础学习之源文件组成&基本数据存储形式--变量


关于程序,我截取了之前看过的一本书里的内容,罗列在下面。个人觉得是一本讲得很清晰的书哟:《Think Python》

不同编程语言中,程序的具体细节也不一样,但是有一些基本的指令几乎出现在每种语言当中:

  • 输入(input):从键盘、文件、网络或者其他设备获取数据

  • 输出(output):在屏幕上显示数据,将数据保存至文件,通过网络传送数据,等等

  • 数学(math):执行基本的数学运算,如加法和乘法

  • 有条件执行(conditional execution):检查符合某个条件后,执行相应的代码

  • 重复(repetition):重复执行某个动作,通常会有一些变化

无论你是否相信,这几乎是程序的全部指令了。每个你曾经用过的程序,无论多么复杂,都是由跟这些差不多的指令构成的。因此,你可以认为编程就是将庞大、复杂的任务分解为越来越小的子任务,直到这些子任务简单到可以用这其中的一个基本指令执行。




【java源文件组成】

java是面向对象的语言,因此从总体上来说,关于java源文件可以分为两部分:由关键字class所定义的类 与 一系列用于解释说明/便于后期调试所书写的注释信息。


1. 类

  • 基本组成部分是类,可以书写对应文档注释;

    1. 可以声明多个类,但只能有一个public型的(java语言的封装性);
    2. public型的类的名与源文件名保持一致;
  • 书写格式:

    [选项] class name{

    xxxx

    xxxx

    }

  • 含有几个类,编译后会生成几个类名.class文件;

  • 命令行解析.class文件时是单独解析,其运行入口是 public static void main(String[] args) ,所以要解析的.class类中必须要含有main方法;

  • use 类:

    类 去extends 类>>子类;

    在源文件开始部分 要import 含类的jar包(子jar包):

1.声明一个该类 类型的field;

2.将该类作为参数传入写的Method/Constructor中;

3.写的某Method中可以return该类;

  • use 接口:

    类 去implements 接口(因为接口表述的是动作);

    接口 去extends 接口(省去多余的动作陈述) ;



2. 文档注释

  • 书写格式:

    /**

    @author XXX

    @version XXX

    */

  • 类似// xxx/* xxx */ 文档注释信息也不会被编译到字节码文件里,不同的是,文档注释可以被jdk工具 javadoc 解析 >>> 以网页文件形式体现;

    书写举例:

    javadoc -d 新建文件夹名 -author -version 源文件名.java

  • 一般可以对整个类或整个方法前使用文档注释;

  • javadoc解析的类一般为public型;



3. 应用程序 = 算法 + 数据结构

  • 数据结构:数据在内存中的存放形式

    影响了程序执行后的效率;

  • 算法:“运算方法”,对数据 进行操作(运算、排列、输入输出、重复…) 所需要的逻辑,是一系列解决问题的清晰指令

    影响了程序执行后结果的正确与否;



4. 关键字

  • 被java语言赋予了特殊含义的单词(小写字母组合);

  • 可以用于识别程序结构(标志着xxxx):

    1.数据类型

    2.流程控制

    3.标志修饰符:访问权限修饰符(ppp)、类/接口/方法/变量修饰符(afss)

    4.继承关系

    5.实例

    6.异常处理

    7.包的使用

    8.特殊的字面值:true、false、null

    9.其它

  • 关键字中所有字母都为小写;

  • 保留字:goto、const



5. 标识符

java 所有的组成部分都需要名字;类名、接口名、变量名、方法名都被称为标识符;

  • 关于标识符,java语言也有自己的命名规则

    涉及了语法,不遵守,编译不通过;

    由26个英文字母大小写,0-9 ,_或 $ 组成;

    数字不可以开头;
    不可以使用关键字和保留字;
    java中严格区分大小写,长度无限制;
    标识符不能包含空格;

  • java开发过程中,常常要遵守一些命名规范

    提高了开发效率;

    1.包名:多单词组成时所有字母都小写 xxxyyyzzz
    2.类名/接口名:多单词组成时所有单词的首字母大写:XxxYyyZzz
    3.变量名/方法名:多单词组成时第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
    4.常量名:所有字母都大写,多单词时每个单词用下划线连接:XXX_YYY_ZZZ





【java程序内容之变量】

编程语言最强大的特性之一,是操作变量的能力,如:新建(声明)变量、为变量赋值、改变变量的值、对变量运算。


1. 含义

  • 变量是程序中基本的数据存储单元(在编程语言中,变量指代我们在计算机中常提到的数据);对应内存空间中一个存储区域;在java语言中,数据类型有两类:

    1.基本数据: 都有相应的值(可以化成十进制、二进制等);有的是通过字符编码集(char)或特定结构表示(如float/double)来转换的;可以直接存储到内存中 >>基本数据类型变量;

    2.引用数据:对一些数据进行的结构上逻辑上的重新组织(暂时理解>> class/array/interface…);其中重要的是它们的首地址值;首地址值将存储到内存中 >>引用数据类型变量(简称 引用/引用变量);

    对象引用:指向了对象的引用;

  • 包含 数据类型、变量名、存储的值(引用数据类型里,存储的类/接口/数组的值指的是它们的首地址值):

    可以 int a = 127,b = 127; //共同使用int关键字
    不可以 int a = b = 127;
    可以 int i2,j2; >> i2 = j2 = 10; //连续赋值
    不可以 System.out.println(int e = a + b);

  • java中每个变量在使用前必须先声明;特别的,常量如果不声明直接使用数值默认int/double型;

  • 程序运行时,变量指向了内存空间中存储的某些数据(一般是某个值,也或者是一片引用类型数据);

  • 常量:在程序执行过程中,始终不会变值的量称为常量,通常也称为 final 变量,只能被赋值一次;



2. 命名规范



3. 变量类型(按数据类型分类)

  • 8(4211)个 基本数据类型:42(数值)1(字符)1(布尔);
  • 3(111)个 引用数据类型:1(类)1(接口)1(数组);
  • 注意字符串类型 String 是 引用数据类型中的class(类) 类型,String 不是关键字;

【数值型】

  • float/double 类型在内存中的存放格式

    xxxxxxxxxxxxx

  • 定义数值类型的数据时,通常使用 int(4bytes); double(8bytes)型;常量也默认是 int(4bytes); double(8bytes)型;

  • 定义 long 型变量时,值后必须以 lL 结尾;

  • 定义 float 型变量时,值后要以字母 fF 结尾;

  • float 可表示的数值的范围比 long 还大;

  • float 单精度,尾数可以精确到7位;

  • 数值形式(书写/编码/存储)

    1.整数型的数值直接书写形式是十进制数形式,是java编程时对开发者来说最方便直接的数值形式;

    2.浮点型数值的直接书写形式可以采用十进制数形式如5.12、512.0f,也可以使用科学计数法形式:52e3、2.1E-2;

    3.如需其他进制进行书写,要加上助记符:0b/0B、0、0x/0X;

    4.char型也有它对应的十进制数值 <<< java采用了Unicode编码

    5.所有数据(对应变量)在计算机内存/cpu寄存器中都是二进制形式存储,所以在后续对变量操作时,应该与内存中的数据存放形式对应起来<<< 所有数值在计算机底层都是以二进制补码形式表示和存储的;

    6.原码:我们开发人员直接面对的十进制数所化成的二进制数;

【字符型char】

  • 'x' 必须有且只能有1个字符(char型) ----- 2 bytes;
  • 转义字符:换行符 '\n' 制表符 '\t' 等;
  • '\\n' 中第一个 '\' 作用:抵消掉后面的特殊意义,如'\"'输出 "'\\n'输出 \n
  • 直接使用 Unicode 值来表示字符型常量:’\uXXXX’,XXXX代表一个十六进制整数;如:’\n’ == ‘\u000a’???;
  • char型数据有它对应的十进制数值 <<< java采用了Unicode 编码;

	char c1 = 'a';
	char c2 = 97; //开发中这样初始化赋值写法比较少见

【基本数据类型转换】

  • 自动类型提升:byte 、char 、short --> int --> long --> float --> double ;

  • 特别的,当 byte、char、short 三种类型的变量做运算(自身/相互)时,结果为 int 型!!;


	byte f = 127;
	byte g = (byte)(f + 1);
	System.out.println(g);     `// -128`  自动类型升级后强制类型转换>>数据截断

	byte g1 = (byte)126 + (byte)1;      `// 127`   126+1在范围内
	//byte g1 = (byte)127 + (byte)127;      `//fail`  超出了范围
	byte f1 = 125;
	//byte g2 = f1 + (byte)1; `// fail`  即使125+1在范围内

	char c1 = 'a';
	byte g2 = (byte)128; 
	System.out.println(g2);  `//-128` 强转>>数据截断
	byte g3 = (byte)126 + (byte)2; `//fail`

  • 强制类型转换符:( )

    1.强制类型转换,可能导致精度损失;

    double doub1 = 12.9;
    int inte1 = (int)doub1; //截断操作

    2.可以低级到高级,保存int型之间的完整相除结果:
    double a = 12 / 5;
    double b = (double)12 / 5;
    System.out.println(a); //2.0
    System.out.println(b); //2.4

【布尔型boolean】

  • 两个字面值(特殊关键字):true false

  • 常在条件判断、循环结构中使用;

  • 编译时将ture/false转化成1/0(int数据类型),书写时不可以自行替代;

  • 不能与其他数据类型运算或转换!!

【字符串String】

  • 不能靠 (String)xxx 将其他类型的变量转换成String型:

      //String a = (String)125;
      //System.out.println(a);  //编译出错
    
  • 声明String类型变量时,使用一对 "xxx",xxx可以为空即""

  • String可以和8种(含 boolean)基本数据类型变量做运算,且运算只能是连接运算+ ;运算的结果仍然是String类型;

  • 可以通过基本类型对应的包装类中的方法进行String到其他类型的转换:

      String str1 = 123 + ""; // "123"
      
      int num1 = Integer.parseInt(str1);
      System.out.println(num1);  // 123
    


4. 变量类型(按有效作用范围分类)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值