[Basic] The most basic things about java
[Basic] The most basic things about java
Table of Contents
1 数据类型
1.1 基本类型, 针对32位系统
1.1.1 C
在C语言中数据类型, 其中整型数据都能够被signed, 和unsigned修饰:
Data type | number of bit |
---|---|
char | 8 |
short int | 16 |
int | 32 |
long int | 32 |
long long | 64 |
float | 32 |
double | 64 |
1.1.2 Java
Data type | number of bit |
---|---|
boolean | true or false |
byte | 8 |
short | 16 |
int | 32 |
long | 64 |
char | 16 (unsigned) |
float | 32 |
double | 64 |
null | special type |
1.2 非基本类型
1.2.1 C
struct, enum, FILE
1.2.2 Java
class, interface, enum
2 操作符
2.1 算术操作符
+, -, *, /, %, ++, --
C语言中, 这些算术操作符都能用于整型, 其中%不能用于浮点型
java语言中, 这些算术操作符均能用于整型以及浮点型数据. 并且加号还被扩展用于String类型
2.2 关系操作符
>, >=, <, <=, ==, !=适用于整型以及浮点变量
2.3 逻辑操作符
2.3.1 C
&&, ||, !,
2.3.2 Java
&, |, ^, ||, &&, ! 均为逻辑操作符, 其中&与&&的区别是, 对于一个表达示: (expresion1) & (expresion2), expression1(2)均执行; 如果采用&&操作符, 那么expression1为假时, expression将不执行.
2.4 位操作符
2.4.1 C
&, |, ^, , , ~
2.4.2 java
&, |, ^, >>, >>>, <<, ~
2.5 条件操作符
?:
3 控制流
3.1 IF
C和java中相同,
if (condition) { statement_sequence; } else { statement_sequence; }
3.2 SWITCH and CASE
c和java中相同
switch (expression) { case constant1: statement_sequence; break; case constant2: statement_sequence; break; case constantn: statement_sequence; break; default: setatement_sequence; }
3.3 WHILE
C和java中相同,
while(condition) { statement_sequence; } do{ statement_sequence; } while(condition);
3.4 FOR
C和java中类似,
for(initialization; condition; iteration) {
statement_sequence;
}
3.5 BREAK and CONTINUE
break和continue在C和java的功能不同, 在c中只能跳出一重循环, 而java中, 借用label, 能够跳出多重循环.
for (initialization;condition;iteration) { one: { two: { three: { System.out.println(" i is " + i); if (i==1) { break one; } if (i==2) { break two; } if (i==3) { break three; } System.out.println("Won't print"); } System.out.println("After three"); } System.out.println("After two"); } System.out.println("After one"); }
4 数据作用域
4.1 C
和C语言作用域相关的关键字有: static, extern
函数外的static限定变量的作用域为文件内部 (蓝色), 函数外其他的变量的作用域为全局作用域 (红色), 在其他的文件中可以通过声明extern的方式进行访问, 函数内部的变量的作用域为函数内部 (绿色), 区块内变量的作用域为区块内部 (黄色).
4.2 Java
和java语言作用域相关的关键字有: protected, private, public, package.
Private Member | Default Member | Protected Member | Public Member | |
---|---|---|---|---|
in same class | Yes | Yes | Yes | Yes |
in same package (subclass) | No | Yes | Yes | Yes |
in same package (non-subclass) | No | Yes | Yes | Yes |
in different package (subclass) | No | No | Yes | Yes |
in different package (non-subclass) | No | No | No | Yes |
----
5 运用JUnit进行测试
5.1 环境搭建
IDE或者是一个更好的选择, Ant也是另一个选择, 这里使用了现成的Makefile资源, 实现对java项目的编译以及运行, 具体参见: Java Makefile: A simple replacement for Ant.
当一步一步完成上述的步骤后, 就能够编译运行具有main函数的项目了. 要运行Junit还得进行细微的更改.
- 在project makefile中添加一个变量:
JunitRunParameters = junit.textui.TestRunner
- 在project makefile中将JavaLibraries赋值为junit.jar hamcrest-core.jar
- 在Main Makefile中, 在runjava下一行, 在$(JavaMainClass)前添加$(JunitRunParameters), 并将JavaRunOptions的-classpath改为-cp
- 最后, 可以通过make进行编译, 以及make run进行运行了.
5.2 一个简单的例子
- 假设你想开发一个Student的类来记录学生的信息, 首先可以从测试代码出发, 先写个测试:
// src/TestCase/StudentTest.java package TestCase; import junit.framework.TestCase; import MainProject.Student; public class StudentTest extends TestCase { public void testCreate() { final String student1Name = "Zhang san"; Student student1 = new Student(student1Name); assertEquals(student1Name, student1.getName()); final String student2Name = "Li si"; Student student2 = new Student(student2Name); assertEquals(student2Name, student2.getName()); } }
- 接着写相应的实现代码:
// src/MainProject/Student.java package MainProject; public class Student { private String name; public Student(String name) { this.name = name; } public String getName() { return name; } }
- 然后分别在MainProject目录和TestCase目录下运行
makeg *.java
, 其中makeg的bash shell代码如下:
file="Makefile" rm -f $file touch $file echo "Source = \" >> $file for SourceFile in $* #(*.c *.cc *.java *.f *.gif *.jpg) do echo " " ${SourceFile} "\" >> $file done echo "" >> $file echo "RmiSource =" >> $file echo "" >> $file echo "Main =" >> $file echo "" >> $file echo "include" '$(DEV_ROOT)/Makefile' >> $file echo "" >> $file
- 然后将TestCase/Makefile的Main变量改为StudentTest, 并将Project Makefile中的package变量进行相应的更改, 运行make进行编译, 然后运行make run即可
6 浏览java library, 了解它能干什么
6.1 String
由String创建的对象是不能被更改的. 它能够干的事情有:
- 获得长度
- 字符串连接
- 字符串和其他数据类型连接
- 特定位置的字符
- 提取子字符串
- 转变成为Byte的
- 转变成字符串数组
- 和其他字符串比较是否相等
- 字符串比较, 字符串匹配
- 字符串查找
- 字符串取代
- 去除两端的空格
- 字符串分割
6.2 各种容器类
主要方便用于数据结构创建, 有列表, 图, 队列, 向量, 集合, 栈等
6.3 java.lang中的不同内容
主要包括, 不要包括, 字符串处理, 类, 数据类型, 多线程, 枚举类等