黑马程序员_java语言基础
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
java语言基础组成部分
一,标示符
像类的名称,变量的名称 。注意名称一定要有意义,要方便阅读。而且必须遵循以下规则:
1、英文,数字,_$组成
2、数字不可以开头
3、不可以试用关键字
注意 :再次强调,java严格区分大小写,所以有些关键字开头大写,如果不是这样的话,会只是一个名称,或者程序报错。
一般规范命名要注意的,包名一般都是小写;类名首字母大写,多个单词组成,每个每个的开头都大写;变量名称,多个字母出去第一个每个单词首字母大写;常量就都大写。平常自己编写程序的时候要注意到这个规范,要成良好习惯。
二,java中的常量与变量
整数型(byte short int long)byte即是字节,由八个二进制位表示而成,其他依次是16个、32个、64个。long定义时要在数字后面加l 如:long k= 4567l;
浮点型(float double) float 定义是要在数字后面加f,如:float k=2.3f;
布尔型(boolean) true 、false注意只有这两个常量,就是真和假,有次可看出是用来判断的
字符型(char ) 使用时必须用单引号 'a' , '4' (0~~~6535)内存中占两个八位。
字符串常量 使用时必须用双引号"acd"
以上为基本数据类型
类(class) 接口(interface) 数组([])
这三位为引用数据类型
( 注意程序里java本身一般整数型的常量为int型,小树默认为double型,所以编程时当数据定义的时候要注意,不要溢出。)
例如:byte b=3;b = b+2; 此时b为byte型,而2为int型,所以当两个相加的时候,+号前的b会被系统升级为int型,相加后就不能赋值给byte b 了。如果想赋值,就得用强制类型转换。方式为:(需要转换的类型)变量。 看下面的比较:
System.out.println('a'); 打印字符 a
System.out.println('a'+1); 此时打印出结果为98 ,因为char为两八位,1为四八位,系统自动提升char类型,所以输出为整数类型。
System.out.println((char)('a'+1)); 强制转换方式,把结果以char类型输出。
注意需要记忆的东西:1)字符a在ASDII里面对应数字为97,A为65。
以上为基本数据类型
类(class) 接口(interface) 数组([])
这三位为引用数据类型
定义变量的使用格式为:数据类型 变量名 = 初始化值。例如 int x=4; 注意分号结束。改变x里面的值是这样的 直接 x=4; 如果再写 int x=4,就意味又定义一个变量名,和第一个定义的变量就冲突了。
三,进制和转换
计算机语言中常用到的进制有
八进制:0-7,满8进1。用0开头表示。就是把二进制位每三位表示为一个。
十六进制:0-9,A-F,满16进1,用0x开头。就是把二进制位每三位表示为一个。
不同进制其实是同一个数的不同表现形式。
1、1)二进制和十进制之间的转换,原理就是对十进制数进行除二运算
例如:把6换成2进制 6/2=3 余数为0
3/2=1 余数为1
而1不能被二整出
此时把0和1和1倒着写 为110 此时就是十进制6转换为二进制110
2)二进制转换为十进制 原理就是二进制乘以2的过程
例如:110 从零开始 第一位乘以2的0次方,第二位1乘以2的1次方,第三位为1乘以2的2 次方,依次类推。
3)二进制之间相加
101
+001 此处也是满2进1。
----------
110
其他进制转换也是类同的。十进制转换十六进制和八进制,先转换为二进制,然后转换为十六进制和八进制,即每四位为一位或者每三位为一位,这样计算比较方便。
负数的二进制表现形式。如6,二进制位110;-6 的二进制,其实就是6的二进制取反+1。一般正数的最高位为0,负数的最高位为1。
四,运算
% 取余 需要注意的是 1%5 , 结果为左边,就是说左边比右边小,取左边。-1%5 结果是-1 ,就是说正负号取决于左边。
区别a++和++a。 b=a++ 就是先把a的值赋予b,在自增。b=++a 就是先给自己自增,然后赋值与b。
字符串和任何数据使用+都是相连接,最终都会变成字符串。例子如下:
System.out.println("a="+a+","+"b="+b);结果为a=3,b=4
System.out.println("5+5="+5+5);结果为5+5=55
转义字符应用:\n:换行。\b:退格,相当于backspace。 \r:按下回车键。 \t:制表符,相当于tab键。转义字符就是通过\ 来改变后面字符或者符号的含义。例如:
System.out.println("\"hello world\"");结果为带双引号的“hello world” ,此处通过\转变后面双引号的意义。
赋值运算里要注意 += -= *= /= %= 的意义 。如+=就是把左右两天加起来的和付给左边,其他的类同。如:short s=4;
s=s+5; (不正确) 这一部丢失精度,不正确,此处变量不会自动更改类型,赋值不了左边
s+=5; (正确) 而+=会自动升级变量类型 正确
注意,比较运算里,不要把==写成=
逻辑运算
逻辑运算就是连接boolean类型的表达式。
逻辑运算符里注意 异或 ^ 记住,相同为假,不同为真。
&&和&的区别:用处上没有区别。&:无论左边是true是false,右边都运算。&&:当左边为false时,右边不运算。
||和|的区别 :用处上没有区别。|:无论左边是true是false,右边都运算。||:当左边为true时,右边不运算。
位运算
位运算,<< 左移,实质就是原来的数乘以2的n次方,移动几位n就等于几
位运算,>> 右移,实质就是原来的数除以2的n次方,移动几位n就等于几。注意右移的时候,高位时0,则补0,如果最高位是1则补1。
位运算,>>> 无符号右移,不管左端最高位是1或0,都补0。
位运算相对于乘除来说,运算效率比较高。
&、 |、! 三个也是位运算,只是有以前的boolean型运算变为二进制型的0和1,此时是1视为真,0视为假,逻辑方面和以前逻辑运算一样。例如:6&3=
110
& 011
------------
010 = 2 则 6 & 3 = 2
反码 ~ 就是取反。小知识,一个数异或同一个数两次结果还是原数,可以用于数据加密。(6^3^3=60)
程序里二进制转换为十六进制
原理图:
0000-0000 0000-0000 0000-1100 1110-0110
& 0000-0000 0000-0000 0000-0000 0000-1111
-------------------------------------------------------------------------------
0000-0000 0000-0000 0000-0000 0000-0110
就是用最后四位为1的与原数 进行 与 运算 ,这就取到了第一组四位。
0000-0000 0000-0000 0000-1100 1110-0110
& 0000-0000 0000-0000 0000-0000 0000-1111
-------------------------------------------------------------------------------
0000-0000 0000-0000 0000-0000 0000-1110
取第二组四位的时候,可以把原数进行右移4位即可,然后在和下面的数进行与运算,依次类推即可
然后把相对应的数转换为十六进制即可。
具体程序:class OperateDemo3
{
public static void main(String[] args)
{
int num = 60;
int n1 = num & 15;
System.out.println((char)(n1-10+'A'));
int temp = 60>>4;
int n2 = temp & 15;
if(n2>9)
System.out.println((char)(n2-10+'A'));
else
System.out.println(n2);
}
}
其中 ni 为与运算过后的值,结果为12,在十六进制里面是C。怎么变化,可以通过-10+'A',然后强制转化char类型即可。
三元运算符 (条件表达式)?表达式1:表达式2。条件表达式为true时,执行表达式1;条件表达式为false时,执行表达式2。
则上述程序输出语句可改为((n1>9)?(char)(n1-10+'A'):ni),用于判断n1是否大于9,n2同样。
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------