1. 程序结构

1.1 源码

JavaCC++
源文件.java.c .h.cpp .h
编译后.class 字节码文件.i .s .o .obj等中间产物.i .s .o .obj等中间产物

1.2 编译

1.3 Hello world

java

1
2
3
4
5
6
public class HelloJava{
	//程序入口
	public static void main(String[] args){
		System.out.println("Hello world!");
	}
}

C

1
2
3
4
//程序入口
int main(){
    printf("Hello World!");
}

C++

1
2
3
4
5
6
#include <iostream>
//程序入口
int main(int argc, char** argv) {
	std::cout << "Hello World!" << std::endl;
	return 0;
}

2. 数据类型

2.1 基本/数值数据类型

java数据类型所占的字节数是固定的,c/c++不同的系统可能不一样

java基本类型

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
long l = 20L;//长整型 L或l结尾 占8个字节
int a = 10;//整型 占4个字节 
short b = 10; //短整型 占2个字节
byte c = 10; //占1个字节 

float f = 1.0f; //浮点型 占4个字节
double g = 2.0; //双精度浮点型 占8个字节

char d='a'; //字符类型 占2个字节
boolean h = true;// 占1个字节

C基本类型

类型存储大小值范围
char1字节-128127或0255
unsigned char1字节0~255
signed char1字节-128~127
int2或4字节-3276832767或-2,147,483,6482,147,483,647
short2字节-32768~32767
unsigned short2字节0~65535
long4字节-2,147,483,648~2,147,483,647
unsigned long4字节0到4,294,967,295
float4字节1.2E-38~3.4E+38 精度6位有效位
double8字节2.3E-308~1.7E+308 精度15位有效位
long double16字节3.4E-4932~1.1E+4932 精度19位有效位

注意,各种类型的存储大小与系统位数有关,但目前通用的以64位系统为主。

为了得到某个类型或某个变量在特定平台上的准确大小,可以使用sizeof运算符。表达式sizeof(type)得到对象或类型的存储字节大小。

1
printf("int 存储大小 : %lu \n",sizeof(int));

C++基本类型

2.2 复合/引用数据类型

java

2.3 类型转换

java

数据类型从低级到高级

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

转换规则:

  • 不能对boolean类型进行类型转换
  • 不能把对象类型转换成不相关类的对象
  • 在把容量大的类型转换位容量小的类型时必须使用强制类型转换
  • 转换过程中可能导致溢出或损失精度。(容量长的转容量短的)
  • 浮点数到整数的转换是通过舍弃小数得到

自动类型转换

必须满足转换前的数据类型位数要低于转换后的数据类型

强制类型转换

  • 条件是转换的类型必须是兼容的
  • 格式: (type)value type是要强制类型转换后的数据类型

3. 字符串

3.1 字符串的创建

java

1
2
String a = "Hello";
String b = new String(xxx)

c

1
2
char a[6] = {'H','e','l','l','o','\0'};
char b[] = "Hello";

3.2 字符串的操作

Java

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
String a = "hello";
String b = "world";
String x = "hello";

//拷贝
String c = new String(a);
System.out.println("c="+c+" ,c==a is "+(c==a));

//拼接
String d = a.concat(b);
System.out.println("d="+d);

//获取长度
System.out.println("字符串a的长度是"+a.length());

//比较
System.out.println("a与b比较="+a.equals(b)+" ,a与x比较="+a.equals(x));

//获取字符或字符串第一次出现的位置
int l = a.indexOf("l");
int lo = a.indexOf("lo");
System.out.println("l 在a字符串第一次出现的位置是"+l);
System.out.println("lo 在a字符串第一次出现的位置是"+lo);

C

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
	char str1[] = "hello";
	char str2[] = "world";
	char str3[20];
	
	//copy
	strcpy(str3,str1);
	printf("strcpy(str3,str1) : %s\n",str3);
	
	//contact
	strcat(str1,str2);
	printf("strcat(str1,str2) : %s\n",str1);
	
	//length
	int len = strlen(str1);
	printf("strlen(str1) : %d\n",len);
	
	//compare
	int cmp=strcmp(str1,str2);
	printf("strcmp(str1,str2) : %d\n",cmp);
	
	printf("str1 = %s\n",str1);
	
	//char index of 
	char* indexChar=strchr(str1,'l');
	printf("strchr(str1,'1') : %s\n",indexChar);
	
	printf("str1 = %s\n",str1);
	//string index of 
	char* ss = strstr(str1,"llo");
	printf("strstr(str1,\"llo\") : %s\n",ss);
	for(int i=0;i<strlen(ss);i++){
		printf("ss[%d]=%c\n",i,ss[i]);
	}
	

4. 面向对象

4.1 对象的创建

4.2 封装

4.3 继承

4.4 多态

5. IO

5.1 文件操作

5.2 读写文件

6. 多线程

6.1 线程创建

6.2 线程状态

6.3 线程方法(操作)

7. 网络编程

7.1 Socket

7.1.1 Tcp

7.1.2 Udp

7.2 Http