java数据类型和运算符

标识符Identifier

Java中凡是可以由程序员自己起名字的都叫标识符。其涉及到的结构有:
                包名、类名、接口名、变量名、方法名、常量名。
命名的规则:
    ① 由26个英文字母大小写,0-9,_ 或 $ 组成。
    ② 数字不可以开头。
    ③ 不可以使用关键字(class、int等)和保留字(goto和const),但能包含关键字和保留字。
    ④ Java中严格区分大小写,长度无限制。(例:class×,Class√)
    ⑤ 标识符不能包含空格。

正确的:
name, Name, user_ name ,$name , name,publicName;
错误的:
9username ,user name , public


标识符的命名规范
     包名:多单词组成时所有字母都小写。(例:i miss you)
     类名、接口名:多单词组成时,所有单词的首字母大写。(例:I Miss You)
     变量名、方法名:多单词组成时,第一个单词首字母小写,
            第二个单词开始每个单词首字母大写。(例:i Miss You)
     常量名:所有字母都大写,多单词时每个单词之间用下划线_连接。(例I_MISS_YOU)

命名规则和命名规范的区别:
      命名规则:以上5个命名规则是Java中标识符命名时必须要遵守的规定。
               任何一个规则不遵守都会引起编译不通过的情况。

      命名规范:以上命名规范非硬性规定,即若不遵守也不会影响程序的编译和运行。
               虽然如此,但最好严格遵守这些命名规范,
               标识符的命名要做到见名知意,所起名字既要贴近实际内容,
               也要能让人一眼看出该标识符属于哪种结构。

Java采用unicode这样的标准的国际字符集。因此,这里的字母的含义:英文、汉字等等。(不建议大家使用汉字来定义标识符!)

关键字和保留字

                       

                                      字符集简介

▪ ASCII
       英文字符集 1个字节
▪ ISO8859-1
       西欧字符集 1个字节
▪ BIG5
       台湾的大五码,表示繁体汉字 2个字节
▪ GB2312
       大陆使用最早、最广的简体中文字符集 2个字节
▪ GBK
       GB2312的扩展,可以表示繁体中文 2个字节
▪ GB18030
       最新GBK的扩展,可以表示汉字、维吾尔文、藏文等中华民族字符 2个字节

▪ Unicode
       国际通用字符集 2个字节
                           ISO8859-1

▪ BIG5                     GB2312                   unicode   utf-8,utf-16

                             GBK

                           GB18030

                                          常量和变量

                                     常量

    常量代表是程序运行过程中  不能再次改变的值
    常量的作用
       1.固定的值 代表计算过程中经常用到的值
        便于程序计算
        圆周率  3.1415926.....
       2.用来代表一个含义
        UP==>1 2 3 4分别代表 上下左右四个方向
    什么样的值算是常量???
        1.固定不变的值  算作常量
        1  3.14  'a'  true
        可以认为所有基本类型的值   固定不变   是常量
        2.特殊的常量
        "abc"--->String
        String是一个引用数据类型,它的值很特殊  可以简单的视为常量
        3.自己创建的空间  存储一个值  让他固定起来  不能改变
        final int UP = 1;

    变量

       变量指的是   程序执行过程中可以改变的
       变量是一个内存空间(小容器)
       变量空间在创建(声明)的时候  必须指定数据类型  变量空间的名字
       变量空间   里面只能存储一个内容(值  引用)
       变量空间内的内容可以改变

 创建变量是 需要注意命名的问题
    命名的规则
        字母(大小写敏感)  数字(0-9不允许开头)  符号(英文符号 _ $)  中文(不推荐)
    命名的规约
        类名字    首字母大写  如果两个以上的单词  所有首字母都大写
            SuperPerson
        变量名    首字母小写  如果两个以上的单词  之后的首字母大写
            superPerson
            遵循驼峰式命名规约
            所有名字都需要见名知义
            为了增强程序的可读性
    变量如何创建/声明
        数据类型  变量名字;

        int a;
        String b;

    编程风格
         注意缩进!
                 定要有缩进。缩进就像人得体的衣着一样!
         成对编程!
                 括号、引号都应该写完后,再往里加内容。
         见名知意!
                  最基本的要求

  变量声明:

    boolean done;
    long earthPopulation ;
    int age ;

      可以在一行内声明多个变量 但要以逗号隔开:

  int i ,t; // both are integers

  不提倡这种风格,逐一声明每一个变量可以提高程序可读性。
  可以将变量的声明和初始化放在同一行中,例如:

 int age = 18;
 float e = 2.718281828f;

  整型常量

        十进制整数,如:99, -500, 0
        八进制整数,要求以 0 开头,如:015
        十六进制数,要求 0x 或 0X 开头,如:0x15


整型变量
        整型常量默认为int型,声明long型常量可以后加‘ l ’或‘ L ‘(建议使用大写,
           小写容易误认为数字1),如:

long a = 55555555; //不出错,在Int表示的范围内(21亿内)。
long b = 55555555555;//不加l出错,已经超过int表示的范围。

 需要注意:
        变量是一个空间  可以只创建空间  里面不存放内容
        变量空间创建后是没有默认的内容  空的
        空的变量空间不能拿来使用   编译错误

     byte x;//声明一个变量空间  空间的名字是x  空间内要求存储的类型是byte整数
        x = 1;//将一个1赋值到x空间内进行存储
        
        计算机底层做了什么事情
        1.x是什么?   变量空间   存在哪儿?----栈内存里
        2.1是什么?   1是常量    存在哪儿?----常量缓冲区
        3.=是什么?  =是赋值    做了什么?

     计算机的硬件组成
        主板  CPU  声卡  显卡  网卡  电源  内存  硬盘

        1.硬盘上创建了一个文件    Test.java
        2.文件中的内容是我们编写的源代码(跟计算机发送指令)
         

            public class Test{
                public static void main(String[] args){
                    byte x;
                    x = 1;
                }
            }


        3.将Test.java源文件---->编译---->Test.class
            内容  我们看不懂  字节码 留给计算机识别
        4.执行---->内存中执行
            将硬盘上的Test.class内容  加载  到内存里
        5.我们写好的指令  执行内存的空间  赋值  变化。。。。

   float e = 3.4F;
        从double转化到float会有损失
        1  3.4  常量值
        存储在常量缓冲区中的
        常量值的存储形式肯定不是十进制   是以二进制形式存储
        1---->  32bit(int)
        3.4-->  64bit(double)
        
    byte a = 1;
        1--->32bit  
        00000000 00000000 00000000 00000001
        a--->8bit
        00000001
        =赋值的时候做了一个自动的决定   自动类型转化

    long d = 2147483648L;
        -2147483648    2147483647是int类型的取值范围
        如果创建的常量值超过以上范围
        程序编译检测的时候会认为  数字太大
        如果我们真的需要那么大的数字  必须在后面加L告知

    字符    字符串
    char    String
    基本    引用
    'a'    "a"   "abc"   ""    null
public class Test{
	public static void main(String[] args){
		byte a = 1;
		System.out.println(a);
		/*short b = 2;
		System.out.println(b);
		int c = 3;//-2147483648    2147483647
		System.out.println(c);
		long d = 2147483648L;//如果超过int的取值范围2147483647
		System.out.println(d);
		float e = 3.4F;  // 从double转化到float会有损失
		System.out.println(e);
		double f = 4.5;
		System.out.println(f);
		char g = 'a';  //字符
		System.out.println(g);
		boolean h = true;  //boolean 判断  对与错
		System.out.println(h);
		String i = "abc"; //字符串
		System.out.println(i);*/
	}
}

保存为:Welcome.java
   编译阶段(编译器创建class字节码文件 )
            进入java文件所在目录,执行命令:javac Welcome.java
           编译时必须加上扩展名.java。
   执行阶段:
           进入java文件所在目录,执行命令:java Welcome
           运行的是类而非class文件,所以类名后不能加扩展名.class

 代码:

        如果源码在编译的过程中出现乱码,原因是因为DOS系统默认的编码方式为GBK,
        这时候我需要修改源文件的编码为ANSI,这样乱码问题就解决了。

     public class Welcome{
       public static void main(String[] args){
            System.out.println("Hello java!");
       }
     }

Windows + R  会弹出 : 输出cmd       

public class HelloWorld{
    public static void main(String[]  args){
        System.out.println("欢迎大家!"); 
        //System.out.println("你好");
        
        /**String name = "中国";
        *int age = 20;
        *System.out.println(name);*/
    }
}

 

 第一个正常

第二个时候大括号不建议在一列  最好分清楚那个对着那个要不然 在做程序出错的时候找代码很麻烦 

第三个括号没对好但是对齐了

//对的
public class Welcome{
    public static void main(String[] args){
        System.out.printh("Hello World!");
    }
}
//错误
public class Welcome{
    public static void main(Sring[] args){
        System oul printhn("Hello Worldr")
}
}
//对的
pubic dass Welcome
{
    public static vold main(StringI args)
    {
        System out println("Hello Wortdr");
    }
}

   

                                        变量和常量的定义:

    变量:程序在运行的时候,有一些量是可以改变的,我们称之为变量
       常量:程序在运行的时候,有一些量是不能改变的,我们称之为常量,也就是最终变量
             注意:
              1.常量定义的时候需要加上关键字final
              2.常量一般
       变量:  数据类型  标识符 = 值     作用域

  在程序中存在大量的数据来代表程序的状态,其中有些数据在程序的运行过程中值会发生改变,
   有些数据在程序运行过程中值不能发生改变,这些数据在程序中分别被叫做变量和常量。
                        1、先声明后赋值 
                            int a;
                            a=10;
                        2、声明+赋值
                         int a = 10;
                        System.out,println(a);  //  输出

 注意:

  在类内部:
    方法之外定义的变量叫成员变量(全局变量),一般会有默认值,使用之前不需要初始化
     在方法内部定义的变量叫局部变量,局部变量在使用之前必须先初始化
     一行可以定义多个变量,但是建议不要这样写,最好一行只定义一个变量,
      也是增强代码的可读性 变量在赋值的时候,我们称这个值为常量
public class ConstantAndVar{
    
    //成员变量
    static int num;
    
    public static void main(String[] args){
        //声明
        //int a;
        //赋值
        //a = 10;
        //声明+赋值
        //int b = 20;
        
        int a = 10;
        a = 20;
        System.out.println(a);
        
        final int b = 20;
        //b = 30;  错误
        System.out.println(b);
        
        System.out.println(num);
        
        int num1 = 0;
        System.out.println(num1);
        
        //int a1=100,b1=200;  不规范
        int a1 = 100;
        int b1 = 200;
        
        
    }
}

    Java是一种强类型语言,每个变量都必须声明其类型。
    Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
    变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储单元,
        声明格式为:

▪type varName [=value] [{,varName[=value]}];

注意事项:
   每个变量都有类型,类型可以是基本类型,也可以是引用类型。
   变量名必须是合法的标识符。
   电脑使用内存来记忆计算时所使用的数据。人类采用旅馆来存储 外出住宿的人们。
   内存中变量好比旅馆的房间,内存中常量好比住旅馆房间的人

  int age=20;
  age=21;
  System.out.println(age);
  String name=“小明”;
  System.out.println(name);

                                       数据类型

     基本数据类型   8个
           4整型        byte   short   int   long64
           2浮点型    float 32   double 64
           1字符型    char 16bit 2字节   Unicode编码   0-65535
           1布尔型    boolean  1bit      true  false

byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。

short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。

int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。

long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。

float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。

double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。

boolean:只有true和false两个取值。

char:16位,存储Unicode码,用单引号赋值。

  Java基本数据类型总结 - 时间朋友 - 博客园

                                                     基本数据类型

  整型
        byte  字节型------>8个bit  敏感单元位
        1byte==8bit    0 0000000    256种组合
        用第一个bit位置来记录符号   0正数   1负数
        数值的范围  -2的7次方  ~  2的7次方-1      
              -128   ~  127
    以上的其他整数类型 依次乘2
    short  2字节==16bit    65526种    -32768    32767
    int      4字节==32bit                       -2147483648     2147483647
    long   8字节==64bit     

    float  32bit   4字节
    0  000000000  00000000000000000000

    字符?    'a'  '+'  '我'   '5'    
    字符中数字和整数的数字冲突
    为了以示区分   每一个字符的前后各加单引号
    为什么英文和符号和数字是一个字节
    为什么中文是两个字节?
        ASCII    美国信息交换标准代码
        a------00000000------97
        a------00000000------97
        a------00000000------97
        字母  数字  符号
        26*2 + 10 + 100    字节256种组合

 基本数据类型的类型转换

         自动类型转换   和   强制类型转换

    int a = 1;
    int b = a;
 

        整型
           byte short int long
​​​
        浮点
           float double
           浮点类型常量:
                十进制数形式,例如:
                                3.14
                                314.0
                                0.314
                科学记数法形式,如:
                                314e2
                                314E2
                                314E-2
                                double f = 314e2; //314*10^2-->31400.0   
                                double f2 = 314e-2; //314*10^(-2)-->3.14
float类型:单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。
double类型:双精度类型 精度是float类型的两倍,绝大部分应用程序都采用double类型。
浮点常量默认为double。要变为float,需在后面增加F/f. 如: 3.14F
浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,
 需要使用BigDecimal类。
        字符
           char
        布尔
           boolean(一位,不是一个字节)
    byte a = 1;//8bit    -128~127
    int b = a;  //32bit
        食堂吃饭
        一碗米饭    2两碗    1两米饭/1两空气
                         4两碗  
    int a = 1000;//编译--运行
    byte b = (byte)a;//127  强制类型转换
        a--->   4两碗     3两米饭/1两空气   空气强制砍掉一部分
        b--->   2两碗     1两米饭/1两空气   -24
    00000000 00000000 00000000 00000001---只保留最后的8bit位
    00000000 00000000 00000011 11101000---十进制-->二进制  
                                          除以2取余数 余数倒序排列


    int a = 1;// 32bit
    float b = a;// 32bit ????可以   b==1.0   精确程度

    long a = 1;//64bit
    float b = a;//32bit
    

    char---字符---'a'---0001010101---97---int
    char x = 'a';
    int y = x;//???  y-->97

转义符:

类型之间的转换问题:
    在赋值运算或算术运算时,要求数据类型相同,否则要进行类型转换
       转换方式:
               自动转换
               强制转换
       除boolean类型外,所有的基本数据类型因为各自的精度不同,赋值时都要考虑这个问题
       除boolean类型外,所有的基本数据类型包括:整型,浮点型,字符型。
    1.同种数据类型之间是可以直接进行赋值操作
        int a = 1;int b = a;||    float x = 3.4;float y = x;
    2.数据类型不同的空间 之间的赋值--->转换问题
        同种大数据类型之间才能发生转换
           基本类型----基本类型之间   可以直接转换(自动 强制)
           引用类型----引用类型之间   可以直接转换(自动 强制--上转型 下转型)
           基本类型----引用类型之间   不可以直接转换(间接--包装类/封装类)
            
    3.保证大数据类型一致的前提下
        基本类型---基本类型
           小数据类型相同
              都是整型  都是浮点
            大空间变量可以直接存储小空间的数据
            小空间变量不可以直接存储大空间的数据(需要强制类型转换)
            转换过程写法都好用  如果转换的过程中数值范围超过边界  可能会有损失
            byte a = 1;   int b = a;//自动直接转化就可以
            int a = 1;  byte b = (byte)a;//需要强制类型转换
            float x = 3.4F;   double y = x;//自动直接转化
            double x = 3.4; float y = (float)x;//强制转换 
            如果发现强制转换之前的数值比较大 强制转化这件事情可以
            int a = 1000; byte b = (byte)a;//编译好用 执行后 b存放的值一定发生变化
           小数据类型不同
              整型---浮点型
            两个比较精确程度  浮点型精确程度更高 可以直接存放整数 反之需要强制转换
            任何一个浮点型都可以直接存放一个整型
            int a = 1;  float b = a;//自动直接转化
            float a =1.0F;  int b = (int)a;//强制类型转换
             整型---字符型
            每一个字符都对应这一个Unicode码   a--97
            char x = 'a';  int y = x;//自动转化  y--97
            int x = 97; char y = (char)x;//强制的转化
             布尔类型很特殊
            不能与其他基本类型之间发生转化
             boolean类型有两个值,true和false
             boolean 类型用来判断逻辑条件,一般用于程序流程控制

基本数据类型  引用数据类型:

            类型转换之前 保证大前提 同种大数据类型一致
            基本--基本   可以直接转换(自动 强制)
            引用--引用   可以直接转化(自动 强制)
            基本--引用   不可以直接进行转化(间接-桥梁-包装类)
 

保证大数据类型一致的前提下(都是基本类型)

       小数据类型一致
       整型--整型 / 浮点--浮点
       比较内存空间的大小
       大数据类型空间可以直接接受小数据类型的值(自动转换)
       小数据类型空间不可以直接接受大数据类型的值(强制类型转换)
       强制类型转换 写法好用 但是需要注意取值范围的问题 丢失一部分数据
       小数据类型不一致
       整型--浮点
       比较精确程度
       浮点型的精确程度更高
       任何一个浮点型空间都可以直接接受一个整型的值
       反之需要进行强制类型转换(强行将小数点之后的部分去掉 只保留整数)
       整型--字符
       Unicode码
    △布尔类型很特殊的基本数据类型 不能与其他的基本类型转换

引用数据类型
           数组[]   类class(抽象类abstract class)  接口interface  枚举enum  注解@interface

1b、1B、1M、1G之间怎么算?看这篇终于学会了-驱动之家

一篇文章看懂二进制、八进制、十进制、十六进制数据转换 - Geek张东坡 - 博客园

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值