标识符:凡是可以自己命名的地方都叫标识符,如:类名、方法名、接口名。。。

  1.标识符命名的规则:
  由26个英文字母大小写,0-9,_或$组成,不遵守会报错。
  不可以用数字开头。
  不能使用关键字和保留字。
  java中严格区分大小写,长度无限制。
  标识符不能包含空格。

  2.java中命名规范
  包名:多单词组成所有的字母都小写:xxxyyyzz
  类名、接口名:多单词组成时首单词小写,后面每个单词首字母大写:xxxYyyZzz
  常量名:所有字母都大写,多单词每个单词用下划线连接:XXX_YYY_ZZ
  最好是见名知意,不要总是用a,b,c。

  3.变量
  java的变量名开辟的内存空间,此空间必须有自己的名字和类型,例int a=1.开辟一个空间,名称为a,类型为整型。变量的作用域在一对{}之间有效。而且肯定有一个初始化值。

public class variable{
public static void main(String[] args){
int myInt = 233;
double myDouble = 3.14; System.out.println(myInt);
System.out.println(myInt + myDouble);
} }

  我们在这里定义的两个变量仅在此花括号中有效,即作用域在此花括号中。

  注意:与动态语言不同之处就是,在Java这样的静态语言里,声明变量的时候ixu要知道变量的数控类型,这样在编译时就能知道数据所占的存储空间的大小,这是静态语言的基本数据类型的优势,Java也是因为此优势,放弃了纯面向对象的设计。

  java中8种基础数据类型

  整型:byte,short,int,long。默认为int类型。

  浮点型:float,double(默认为双精度)。

  字符型:char只能表示一个字符(英文,中文,标点符号,'\t',‘\u1234’等):char a = 'ab'这样会报错,包含了两个字符。需要包含多个字符需要定义字符串str = "ab"。

  布尔类型:boolean,只能取true或false,不能取null,也不能取0,1。

  值得一提的是:

  浮点型(小数):   都是不精确的
  float:单精度浮点型  长度:4个字节,
  科学计数法表示后,小数点后7~8位,
  数字常数如果想要表示是float类型,后面加F或f。

double:双精度浮点型 长度:8个字节   默认类型,
    科学计数法表示后,小数点后15~16位,
    如果是double类型,数字后面可加可不加D或d。

计算机显示是没有小数点的,为了实现小数点,在计算机底层使用的是科学记数法记录的,整数部分*(10**n),因为整数部分的记录长度有限,所以浮点型的数据都是有限长度的,计算出来的小数的值就不精确。float实际精度只有小数点后7-8位左右,double的精度高一点可以到15-16位。

字符型     存储单个(有且只有一个)字符。且字符可以是中文,也可以是英文字符,因为Java支持Unicode编码。
占的内存大小是:2个字节,统一使用Unicode编码,每一个字符、标点符号等都有唯一的一个编码值;
char字符的三种类型:
class TestChar{
public static void main(String[] args){
// 1.字符表现形式
int a = (int)'a';
System.out.println(a);// int b = (int)'丁';
System.out.println(b);//19969 //int c = (int)'丁j';
//System.out.println(c);//只能放一个字符 // 2. 转义字符类型的表示
int c = (int)'\n';
System.out.println(c);//10 // 3. 使用字符的Unicode编码值
char d = (char)'\u4e01';
System.out.println(d);//丁
}
}

char

class TestChar{
public static void main(String[] args){
//char a = '';//不能这样定义一个空字符,编译会出错
//System.out.println(a); int b = (int)' ';//此处是一个空格,''里面必须有东西
System.out.println(b);// int c = '\n';//存储范围小的常量值和变量值可以直接赋值给存储范围大的变量
System.out.println(c);// char d = (int)'\u4E01';
System.out.println(d);//丁 int e = (char)'\u4E01';
System.out.println(e);//
}
}

charPlus

  布尔型:
  boolean:
  只有两个值:true,false。
  在底层实现bool就是0,1,在python中ture和false可以当作0,1来使用,但是Java里是不可以的。
class java_type{
public static void main(String[] args){
//byte类型,整型默认值都为0
byte myByte = 100;
System.out.println(myByte);
//short类型
short myShort = 233;
System.out.println(myShort);
//int类型
int myInt = 23333;
System.out.println(myInt);
//long类型,默认值0L
long myLong = 12345678910111213L;
System.out.println(myLong);
//float类型,默认值是 0.0f
float myFloat = 234.5f;
System.out.println(myFloat);
//double类型,默认值是 0.0d
double myDouble = 3.14;
System.out.println(myDouble);
//boolean类型,默认值是 false
boolean myBoolean = true;
System.out.println(myBoolean);
//char类型
char myChar= 'J';
System.out.println(myChar);
} }

  自动类型转换

低  ------------------------------------>  高

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

  (1)存储范围小的常量值和变量值可以直接赋值给存储范围大的变量

例如:
byte和byte-->int
short和short-->int
char和char-->int
byte和double-->double

  (2)byte,short,char之间不能运算,一运算(加减乘除等),最小提升为int

        byte f = 2;
char g = 'a';
//f = f + g;//损失精度,char与byte相加的值数据类型提升为int,byte盛放不了,所以会报损失精度的编译错误。
f += g;//自动强制类型转换了
System.out.println(f);//99

  (3)boolean不与任何转换

  (4)所有类型和String一旦拼接“+”,结果都是String

  强制类型转换

  容量大转换为容量小的,要使用强制类型转换符(),会导致精度损失,boolean不可以强制转换成任何类型,+=也实现了自动完成强制类型转换。

  比如将int类型12345转换为byte类型:

  int 12345转换为二进制为110000 00111001,byte类型为8位二进制数,会截断110000 00111001取00111001的值,00111001转化为10进制结果为57。

class exchange{
public static void main(String[] args){
int myInt = 12345;
byte myByte = (byte)myInt;
System.out.println(myByte);
char c1='a';//定义一个char类型
int i1 = c1;//char自动类型转换为int
System.out.println("char自动类型转换为int后的值等于"+i1);
char c2 = 'A';//定义一个char类型
int i2 = c2+1;//char 类型和 int 类型计算
System.out.println("char类型和int计算后的值等于"+i2);
}
}

  运行结果为:

root@debian:/home/jeff/java_coding/day002# java exchange
57
char自动类型转换为int后的值等于97
char类型和int计算后的值等于66

  算数

class suanshu{
public static void main(String[] args){
int i1 = 12 % 5;
int i2 = -12 % 5;
int i3 = 12 % (-5);
int i4 = -12 % (-5);
System.out.println(i1);2
System.out.println(i2);-2
System.out.println(i3);2
System.out.println(i4);-2
}
}

  可以的出结论,取模的结果与被取模数的符号有关。

class suanshu{
public static void main(String[] args){
//++
//a++,先计算再+1
int int1 = 10;
int int2 = int1++;
System.out.println(int1);11
System.out.println(int2);10 //++a,先+1。再赋值
int int3 = 10;
int int4 = ++int3;
System.out.println(int3);11
System.out.println(int4);11 }
}

  其他算数后面用到再解释,与我们一般使用并没有什么分别。

  java中的字符类型与字符串类型的差别(单双引号问题)。

  在java中单引号中的是字符类型,即char,而双引号中则为字符串类型,即string。

class charString{
public static void main(String[] args){
System.out.println('*' + '\t' + '*');
System.out.println("*" + "\t" + "*");
}
}

  单引号相加时为char类型相加,结果会提升为int类型,即将对应的ascii码转化为对应的数值再相加,结果是一个int类型的数值。而双引号相加的结果是字符串的相加,所以结果是一个字符串类型。

  输出结果:

root@debian:/home/jeff/java_coding/day002# java charString
93
* *

  注意:

  1.  Java的标识符可以使用$符号,一般$都使用在内部类的变量名中,我们自己的定义标识符一般不要使用;

  2.  数字常数如果想要表示是long类型的,后面加L或l(小写L);表示是float类型,后面加F或f;

  3.  字符型存储单个字符(0个字符也不可以,即不可以是'')。且字符可以是中文,也可以是英文字符,因为Java支持Unicode编码。占的内存大小是:2个字节。还可以是转义字符和'\uxxxx'Unicode字符;

  6. boolean有且只有两个值,不能是1,0,不可相互转换;

  7. 打印显示0x或者0b等结果会自动转换成10进制的结果;

  8. 字符串String不是基本数据类型;

  9. 变量三要素:变量名,变量值,变量数据类型;

  10. 标识符的命名规则和标识符的命名规范见下面;

  11. 计算机底层存储的都是补码,正数:原码、反码、补码都一样,负数的原码转反码,除符号位全部取反,反码+1=补码;

  12. 局部变量只有可能有一种修饰符就是final;

  13. 局部变量需要先声明再赋值最后使用,否则会报错;

  14. 修改变量时,变量的值已经定义过了,再加上数据类型会报错,重复定义;

  15. 注意使用变量的作用域,超出作用域的括号就需要重新定义使用了。

  附:

 (1)关键字:在Java中被赋予的特定含义的单词。
基本数据类型相关(8个):byte、short、int、long、float、double、char、boolean
流程控制语句相关(10个):if、else、switch、case、default、break、for、while、do、continue
判断某个对象是否是某种类型的实例对象运算符:instanceof
定义类:class
创建类的对象:new
包相关:package、import
权限修饰符:public、protected、(缺省)、private
继承类:extends
定义接口:interface
实现接口:implements
当前对象:this
父类引用:super
表示无返回值:void
结束方法:return
定义枚举:enum
其他修饰符:abstract、static、final、native
异常处理:try、catch、finally、throws、throw
多线程同步和安全:synchronized、volatile
和IO序列化相关:transient
和单元测试相关:assert
其他:strictfp[strictfp 关键字可应用于类、接口或方法。如果你想让你的浮点运算更加精确,严格遵守FP-strict的限制,符合IEEE-754规范,而且不会因为不同的硬件平台所执行的结果不一致的话,可以用关键字strictfp.]
(2)保留字:在Java中注册但还未使用
goto、const
(3)特殊值:true、false、null

Java里的关键字、保留字和特殊值

局部变量和成员变量的区别?
  (1)声明的位置不同
  局部变量:在方法中
  成员变量:在类中方法外
  (2)变量的值在内存中存储的位置不同
  局部变量:在栈中
  成员变量:在堆中,而且每个对象存储一份
  (3)初始值的获取方式不同
  局部变量:必须手动初始化
  成员变量:如果没有手动初始化,或手动赋值,那么一旦创建对象它就有默认值
  (4)生命周期:从内存中分配到内存的回收
  局部变量:代码执行到声明该局部变量的位置开始,到出了它的作用域的}结束
  成员变量:从new对象开始,到该对象被垃圾回收
  (5)作用域:
  局部变量:从声明处开始到所属的}结束
  成员变量:在本类中
  在其他类中,必须通过对象访问,而且还有看是否可见
  (6)修饰符
  局部变量:如果要有修饰符,只能有一个final
  成员变量:修饰符可以有很多....    

二、 java中的变量与数据类型及类型转换的更多相关文章

  1. java中的变量和数据类型

    变量和javascript的变量含义一样 在Java中,变量分为两种:基本类型的变量和引用类型的变量.(javascript中同样是这样的) 基本数据类型 基本数据类型是CPU可以直接进行运算的类型. ...

  2. Java中的变量,数据类型和运算符

    变量,数据类型和运算符 1.变量是一个数据存储空间的表示,它是储存数据的基本单元. 如何理解这句话,下面用一个表格可以形象的表达: 变量与房间之间的对应关系 房间名称 变量名 房间类型 变量类型 入住 ...

  3. Java中的变量、数据类型和运算符

    1. java语言是一种强类型的语言,对各种数据类型都有明确的区分,而计算机使用内存来记忆大量运算时需要使用的数据,而当声明一个变量时,即在内存中划分一块空间存储数据,而变量类型决定划分内存空间的大小 ...

  4. 004 java中的变量

    这篇文章为你搞懂三个问题 什么是变量? 如何使用变量? 变量命名有哪些规范? 变量 计算机的内存类似于人的大脑,电脑使用内存来存储计算所需要的数据. 内存像旅馆一样,不同的房间类型对应不同的数据类型, ...

  5. Java中的变量——通过示例学习Java编程(4)

    作者:CHAITANYA SINGH 来源:https://www.koofun.com/pro/kfpostsdetail?kfpostsid=14&cid= 变量是用来存放可以更改的值的容 ...

  6. Java中的变量与变量的作用域

    关于Java中的变量及变量的作用域 关于Java中的变量及变量的作用域 0. 变量的概念 在程序运行期间,系统可以为程序分配一块内存单元,用来存储各种类型的数据.系统分配的内存单元要使用一个标记符来标 ...

  7. Java中字符串string的数据类型

    Java中字符串string的数据类型 时间:2017-07-03 08:01:47 YuanMxy 原文:https://blog.csdn.net/YuanMxy/article/details/ ...

  8. Java中的变量之成员变量、本地变量与类变量

    Java中的变量: 1.成员变量(实例变量,属性) 2.本地变量(局部变量) 3.类变量(静态属性) 一.成员变量(实例变量,属性) 1.1-成员变量:(在类中定义,    访问修饰符   修饰符   ...

  9. 学习笔记--Java中的变量

    Java中的变量 /** * 关于 Java 语言当中的变量: * * 1. 什么是变量? * - 变量的本质上来说是内存空间,这块空间有(数据类型.名字.字面值) * - 变量包括三部分:数据类型. ...

随机推荐

  1. SAP行列转换的一种方法

    一段经典的代码写在这里 TABLES spfli. DATA: lt_data TYPE STANDARD TABLE OF spfli, lwa_ref TYPE REF TO data, lt_f ...

  2. JS处理数据四舍五入,tofixed与round的区别

    此区别是在做微信端有关绑定设备数据曲线平滑处理的过程中,进行验证时候无意发现. 1 .tofixed方法 toFixed() 方法可把 Number 四舍五入为指定小数位数的数字.例如将数据Num保留 ...

  3. Applied Nonparametric Statistics-lec3

    Ref: https://onlinecourses.science.psu.edu/stat464/print/book/export/html/4 使用非参数方法的优势: 1. 对总体分布做的假设 ...

  4. graph-bfs-八数码问题

    这个看起来是童年回忆:) 大体思路是,将每个排列状态看成图中的一个点,状态之间转换说明有边.然后用bfs,如果遍历完之后还是没有找到目标状态, 则说明是无解的,否则输出步数.具体想法写在代码里吧,多多 ...

  5. AD采样求平均STM32实现

    iADC_read(, &u16NTC_1_Sample_Val_ARR[]); == ui8FirstSampleFlag) { ; i<; i++) { u16NTC_1_Sampl ...

  6. Wannafly挑战赛21 机器人

    从前在月球上有一个机器人.月球可以看作一个 n*m 的网格图,每个格子有三种可能:空地,障碍,机器人(有且仅有一个),现在地面指挥中心想让机器人在月球上行走,每次可以发送一个指令,为 U-往上走.D- ...

  7. PAT Basic 1074

    1074 宇宙无敌加法器 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”.每个 PAT 星 ...

  8. 1036: [ZJOI2008]树的统计Count(树链剖分)

    1036: [ZJOI2008]树的统计Count Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 19830  Solved: 8067[Submit ...

  9. python基础学习笔记——字符串方法

    索引和切片: 索引:取出数组s中第3个元素:x=s[2] 切片:用极少的代码将数组元素按需处理的一种方法.切片最少有1个参数,最多有3个参数,演示如下: 我们假设下面所用的数组声明为array=[2, ...

  10. luogu2766 最长不下降子序列问题

    第一问DP水过.dp[i]代表以i结尾的最长不下降子序列长度. 二三问网络流. 第二问是说每个子序列不能重复使用某个数字. 把每个点拆成p(i),q(i).连边. 要是dp[i]=1,连源,p(i) ...