JAVA基础学习 -1 三板斧
http://blog.youkuaiyun.com/sunshangjin
1. 引子
最近因为工作需要,开始学习JAVA,我之前常用的编程语言是C,C#,C++,基本没有用JAVA,JAVA需要从基础开始学习了。
JAVA是从C++优化而来;C#是从JAVA变化而来。各个语言都有渊源,语法学起来也不困难,困难就在于使用的习惯。
2.谈语言基础
学习一门新的语言的基础就是三板斧了:数据类型,运算符,和基本流程控制语句。学习了这三个就基本入门了。
学习语言的目的就是完成一个项目,就如同建立一座大厦,需要砖头、石灰、钢筋…有了基本材料就可以建房子了。至于建的房子高不高,方便不方便建设,那就要看它有没有现成的设计图了,有没有好用的工具了,还要懂得一些设计模式了。
这里我只记录下自己需要掌握的基础内容,以备后面查找。
3.数据类型–砖头 钢筋
java支持的数据类型,如下图所示:
基本数据类型变量存的是数据本身,而引用类型变量存的是保存数据的空间地址。
引用类型是建设的大件,想要构建大厦,这是必须的材料。
注意,JAVA中的基本数据类型所占用的字节在不同平台中是固定的,这和C++有所不同
常量的关键字是final,这和C#等语言不同。final 同样可以修饰类、方法、属性、变量。作用都是不允许继承或者修改。
4. 运算符–混凝土
共五类
算术运算符 | 赋值运算符 | 比较运算符 | 逻辑运算符 | 条件运算符 |
---|---|---|---|---|
+-* / % ++ – | = += -= | <>!= == | && \ ! ^ | 布尔? A:B; |
几种运算符混合组成一句话,到底谁先运算,这就得看运算符的优先级。
5.流程控制语句,—搬砖砌墙
流程控制和C++ 没有多大差别,主要就是:
* if
* Switch
* while / do ..while
* for(;;) for(元素类型 元素:元素数组)
switch 后面小括号中表达式的值必须是整型或字符型.
在遍历数组、集合时, foreach 更简单便捷。
5. 二进制运算及进制间转换和应用
5.1 进制转换
在Integer类种实现:包含两种转换,一种是十进制转换成其他进制,一种是其他进制转换成十进制。
String mString = "10101100";
//其他进制转换成十进制
System.out.println(Integer.parseInt(mString, 2));
System.out.println(Integer.parseInt("A6", 16));
//十进制转换成其他进制
Integer mInteger = 56;
System.out.println(Integer.toHexString(mInteger));
System.out.println(Integer.toBinaryString(mInteger));
System.out.println(Integer.toString(mInteger, 2));
5.2 二进制的位运算
7种运算符
与运算 | 或运算 | 异或运算 | 反码运算 | 左移 | 右移 | 无符号右移 |
---|---|---|---|---|---|---|
& | \ | ^ | ~ | << |
> |
> |
1. 异或运算作用^
与1异或反转,与0异或保留原值。
java
1010 1010 ^ 00000 1111 = 1010 0101;
5.3 Java中进制转换的应用
应用场景包括文件读写和数据通信。
内存的数据字节的存储顺序
在计算机内存中,通常是以字节(Byte),也就是 8 个位(Bit)为基本存储单元(也有以 16 位为基本存储单元的)。对于跨越多个字节的数据类型(比如 int 长 4 个字节),如何在内存中对这些字节进行排序有两种常见的方法:大端法(Big-endian)和小端法(Little-endian)。
不管是大端法还是小端法存储,计算机在内存中存放数据的顺序都是从低地址到高地址,所不同的是首先取低字节的数据存放在低地址还是取高字节数据存放在低地址。
若首先取高字节的数据存放在低地址,则是大端法;
若首先取低字节的数据存放在低地址,则是小端法。
- 整型和字符串转换成字节
//整型转换位字节数组
int m = Integer.parseInt("0000000010000011", 2);
byte[] byteArry = new byte[4];
byteArry[0] =(byte)(int)(m>>8*0 & 0xff);
byteArry[1] =(byte)(int)(m>>8*1 & 0xff);
byteArry[2] =(byte)(int)(m>>8*2 & 0xff);
System.out.println(Arrays.toString(byteArry));
Integer mmInteger =byteArry[0]&0xff;
System.out.println("God's Integer:" + mmInteger);
//字符串转换成字节数组
String mString = "SunRong";
byte[] bArray = mString.getBytes();
String God = new String(bArray);
System.out.println(Arrays.toString(bArray) + " " + God);