java中的标识符:
名字就是标识符,任何一个变量、常量、方法、对象和类都需要有名字。
所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始,不能以数字开头。首字符之后可以是字母(A-Z或者a-z),美元符($)、下划线(_)或数字的任何字符组合。
不能使用关键字作为变量名或方法名。
标识符是大小写敏感的。(java是大小写敏感的语言)
定义标识符时还应遵循以下规则:
(1)包名的所有字母一律小写,如cn.itcast.test。
(2)类名和接口名每个单词的首字母都要大写,如ArrayList、Iterator.
(3)常量名的所有字母都要大写,单词之间用下划线连接,例如DAY_OF
(4)变量名和方法名的第一个单词首字母小写,从第二个单词开始每个单词首字母大写,如lineNumber,getLineNumber
(5)在程序中,应该尽量使用有意义的英文单词定义标识符,以便于阅读,常量随使用随定义
代码示例如下:
public class Hello {
public static void main(String[] args) {
//这是单行注释
/* 这是多行注释
可以在多行进行注释
*/
/** @Auro 文档注释的格式,一般不常用*/
String aiLike="wo";//可以以字母开头
String _1="r";//可以以_开头
String $5="A";//可以以$开头
//String #5="D0";不能以#开头
//String 5as="d";不能以数字开头
//String -sd="5";不能以-开头
String weLove="rgf";
String WeLove="rgf";
//这两个不一样,标识符是大小写十分敏感的。
String mingzi="rgf";
//不要以拼音去命名,这样子很难看懂。
String 王者荣耀="百星王者";
//可以使用中文命名,但是一般不建议这样去使用。
System.out.println(weLove);
System.out.println(mingzi);
System.out.println(WeLove);
System.out.println(aiLike);
System.out.println(_1);
System.out.println($5);
System.out.println(王者荣耀);
}
}
运行界面如下:
数据类型:
强类型语言(java、c++):要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。安全性高,速度低。
弱类型语言(javascript、vB):
变量的数据类型分布如下所示:
字符型:定义char型变量,通常使用一对' ',内部只能写一个字符。
char(1字符=2字节)
表示方式:1.声明一个字符 2.转义字符(‘\n') 3.直接使用Unicode值来表示字符型常量
ANSI编码在中文系统里面默认为GBK.命令行默认是使用GBK的方式进行解析的。
八大数据类型的代码如下:
public class A {
public static void main(String[] args) {
// String a=10;String是用来定义字符串的,不能用来定义数字。
//变量名的定义一般第一个单词的首字母小写,之后的每个单词的首字母都大写。
//Integer 按住ctrl键,然后鼠标点击即可进入该类的详情界面,进行详细了解。
int a=10;
String A="ypl";
System.out.println(a);
System.out.println(A);
//八大基本数据类型
//整数类型
int B=10; //最常用的
short C=55;
long D=6566L; //long类型要在数字后面加个L。
byte E=5;
//布尔值,只有true和false两个值。代表是非,常常在条件判断、循环结构中使用
boolean c=false;
//小数:浮点数
float d=3.1f; //float类型要在数字后面加上f。
double e=5.025;
//字符类型
char f='中'; //字符代表一个字。
//字符串,String不是一个关键字,而是一个类。
String an="name rgf";
System.out.println(B+C+D+E);
System.out.println(c);
System.out.println(d+e);
System.out.println(f);
System.out.println(an);
}
}
运行界面如下所示:
根据结果可知,同一类型的数据可以进行相加,同时在代表同一数据的类,按住ctrl键点击该类时可以进入详情界面,如下图所示:
位(bit):是计算机内部数据储存的最小单位,11001100是一个八位二进制数
字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示
1B(byte,字节)=8bit(位)
字符:是指计算机中使用的字母,数字,字和符号
1bit代表1位,1Byte表示一个字节, 1B=1b
1024B=1kB
1024KB=1MB
1024MB=1GB
1024GB=1TB
电脑的32位和64位区别在于它们的寻址能力的强弱。64位的电脑支持128G的内存,当然也不止这一点,而32位的只支持4GB的内存
数据类型扩展:
1.String属于引用数据类型,翻译为:字符串
2.声明String类型变量时,使用一对“ ”。char c=' ',里面不能为空,也不能少一个或者多一个,只能写一个。
3.String可以和8种基本数据类型变量做运算,且运算只能是连接运算:+
4.运算的结果仍然是String类型。
class Main {
public static void main(String[] args) {
String numberStr="学号:";
int number=1001;
String info=numberStr+number; //连接运算,如果出现String,即为连接,如果没有String,即为+。
System.out.println(info);
}
}
运行之后如下所示:
3的练习:
class Main {
public static void main(String[] args) {
char c='a'; //97 A:65
int num=10;
String str="hello";
System.out.println(c+num+str);//107hello
System.out.println(c+str+num);//ahello10
System.out.println(c+(num+str));//a10hello
System.out.println((c+num)+str);//107hello
System.out.println(str+num+c);//hello10a
}
}
运行之后如下所示:
3的练习(2):
出现* *,
设计的代码如下所示:
class Main {
public static void main(String[] args) {
System.out.println("* *");
System.out.println('*' +'\t'+'*'); //字符型,ANSI码相加
System.out.println('*'+"\t"+'*');
System.out.println('*'+'\t'+"*");
System.out.println('*'+('\t'+"*"));
}
}
运行之后如下所示:
3的练习3:
class Main {
public static void main(String[] args) {
// String str1=4; //是错误代码
String str2=3.5f+""; //正确
System.out.println(str2);
System.out.println(3+4+"Hello!"); //7Hello!
System.out.println("Hello!"+3+4);//Hello!7
System.out.println('a'+1+"Hello!");//98Hello!
System.out.println("Hello!"+'a'+1);//Hello!a1
}
}
运行之后如下所示:
判断如下:
class Main {
public static void main(String[] args) {
short s=5;
//s=s-2; //错误:s-2结果为int型,不能为short
byte b=3;
//b=b+4; //错误:b+4结果为int型,不能为byte
b=(byte)(b+4); //强制转换
char c='a';
int i=5;
float d=3.14F;
double result=c+i+d; //正确
byte b1=5;
short s1=3;
//short t=s1+b1;//错误,相加为int型
}
}
3的练习4:
class Main {
public static void main(String[] args) {
// String str=123; //编译不通过
String str1=123+"";
System.out.println(str1); //"123",输出虽然没有双引号,但是是字符串。
// int num=str1; //错误的,不能为int型
// int num=(int)str1; //错误的,String和int不能这么转换
int x = Integer.parseInt(str1); //123
System.out.println(x);
}
}
运行如下所示:
public class B {
public static void main(String[] args) {
//整数拓展: 进制 二进制(0b或者0B开头,满2进1)
// 十进制(由数字0~9范围内的整数组成)满10进1
// 八进制(以0开头,并且其后由0~7范围内的整数组成的数字序列)满8进1,以数字0开头表示
// 十六进制(以0x或者0X开头并且其后由0~9,A~F(相当于15)组成的数字序列构成),满16进1,此处的A~F不区分大小写
int i=10; //十进制
int i2=010;//八进制
int i3=0x10; //十六进制
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
System.out.println("=====================================================================");
//浮点数拓展
//float 表示的字长有限,也是离散的,舍入误差(四舍五入)大约接近但不等于
//最好完全避免使用浮点数进行比较,容易出现误差。
//BigDecimal 数学工具类进行比较
float f=0.1f;
double d=1.0/10;
System.out.println(f==d); //这两个数不相等
System.out.println(f);
System.out.println(d);
float f1=1555659595f;
float f2=f1+1;
System.out.println(f1==f2);
System.out.println("========================================");
//字符扩展
char c1='a';
char c2='中';
System.out.println(c1);
System.out.println((int)c1);//把char类型转换为int类型,强制类型转换
System.out.println(c2);
System.out.println((int)c2);
}
}
进制的解释如下所示:
class Main {
public static void main(String[] args) {
//计算机中不同进制的使用说明
//对于整数,有四种表示方式
//整数拓展: 进制
// 二进制(0b或者0B开头,满2进1)
// 十进制(由数字0~9范围内的整数组成)满10进1
// 八进制(以0开头,并且其后由0~7范围内的整数组成的数字序列)满8进1,以数字0开头表示
// 十六进制(以0x或者0X开头并且其后由0~9,A~F(相当于15)组成的数字序列构成),满16进1,此处的A~F不区分大小写
int num1=0b110;
int num2=110;
//int num3=0128;//错误,八进制不能出现8
int num3=0127;
int num4=0x110A;
System.out.println("num1= "+num1);
System.out.println("num2= "+num2);
System.out.println("num3= "+num3);
System.out.println("num4= "+num4);
}
}
运行如下所示:
进制转换:
我们来进行查看十进制与二进制的转换:
二进制转换为十进制:
二进制的整数有如下三种形式:
原码:直接将一个数值 换成二进制数,8位数,(数值为从第一位:+即加到有值的最高位,且每位为1才进行相加,最高位是符号位(0:正数,1:负数)
负数的反码:是对原码按位取反,只是最高位(符号位)确定为1(除符号位外,各个位取反)
负数的补码:其反码加1。
计算机的底层以二进制补码的形式保存所有的整数。
正数的原码、反码、补码都相同
负数的补码是其反码+1。
当给定一个数求它是多少的时候,所给一般为补码,我们根据补码-1求取出来反码,反码再求原码,最后进行相加求和就可以。
+127的二进制数为01111111(原码)
-127的二进制数为11111111(原码)
-127的二进制数为10000000(反码)
-127的二进制数为10000001(补码)
-128的二进制数为10000000(补码)
十进制转换为二进制:
除2取余的逆
例如13的二进制:
13/2=6余1
6/2=3余0
3/2=1余1
1/2=0余1
0/2=0余0
0/2=0余0
0/2=0余0
0/2=0余0
所以二进制数为00001101.
二进制与八进制和十六进制的转换:
将二进制数的每三个一位为一个数
二进制数(32位):00000000011101001,后面数每三个一位,001(1),101(5),011(3)。
八进制数:0351
二进制数(32位):00000000011101001,后面数每四个一位,1001(9),1110(14 :E)
十六进制数:0xE9
八进制和十六进制与二进制的转换:
把八进制的数每一位拆分为三个值:
03(011)5(101)7(111):011101111
十六进制转换成二进制:
把十六进制的每一位数拆分成四个值:
0X(0011)3(0011)A(1010)F(1111)
我们用到进制转换,在API(菜鸟教程里面会有API中文手册)里面会有一些方法:Integer里面的toOctalString(8进制):
toBinaryString(2进制),toHexString(16进制)。
布尔值扩展转义字符扩展代码示例如下:
public class C {
public static void main(String[] args) {
//字符扩展
char c='\u0061';
System.out.println(c);//a
//所有的字符本质还是数字
//编码问题 Unicode编码,处理各种语言的文字,占两个字节,表示0-65536个字符
//Excel表格最长可以有2的16次方,即65536。
/*通过Unicode转义来表示,用u0000去表示,表示到~uffff。*/
//转义字符
//\t回车,制表符。\n换行符
System.out.println("Hello\t World");
System.out.println("Hello\nWorld");
String sa=new String("Hello World");
String sb=new String("Hello World");
System.out.println(sa==sb);
String sc="Hello World";
String sd="Hello World";
System.out.println(sc==sd);
//对象 从内存分析
//布尔值扩展
boolean flag=true;
if (flag==true){}//新手程序员
if (flag){}//默认里面的东西是否等于真,这两种写法是一样的。
//Less is More!代码要精简易读。
}
}
运行界面如下: