学习记录
记录一些学习过程的,防止后续遗忘,方便回顾
文章目录
- 学习记录
- 一、数据类型
- 二、标识符
- 三、流程控制语句
- 四、输入输出
- 五、switch语句
- 六、数组
一、数据类型
C语言
基本数据类型:
整型:short(2B) int(4B) long(8B)
浮点型:float(4B) double(8B)
字符型:char(1B)
构造数据类型:
结构体(struct)、数组(arry)、共用体(union)枚举(enum)
指针数据类型(*)、空类型(void)
共用体(union)举例:
//比如成绩不同的表示方法 95分 A档 95.0分 union的大小与最大的数据类型相同,一次只能一个变量有值
union{
int a;
float b;
char c;
}
枚举(enum)举例:
enum EN{
a,//0
b,//1
c//2
};
JAVA
基本数据类型:
整型:byte(1B) short(2B) int(4B) long(8B)//byte不同
浮点型:float(4B) double(8B)
字符型:char(2B)//不同点 char a='男'
布尔型:boolean(4B)
引用数据类型:
类:class
接口:interface
数组:array[]
枚举:enum
记录:record
JAVA,String为引用数据类型,俗称字符串,String s="abc"
判断String A,B是否相同用A.equal(B)方法,不是A==B
c语言中,使用的是char arr[N]来当字符串,char arr[]="abc",默认在字符串后面添加'\0',
不可以arr="abc"(arr为地址常量),可以使用函数操作:
strcpy (A,B):把B中字符复制到A中去
strcat (A,B):把B拼接到A后面去
strlen(A):计算A的长度 不包含 '\0'
strcmp(A,B):AB长度比较 A>B 结果大于0,反之<0,相等=0.
二、标识符
C语言
字母 数字 下划线 ,数字不可以开头。不能是关键字
JAVA
由26个英文字母大小写,0-9 ,_或
$
组成
数字不可以开头。
不可以使用关键字和保留字,但能包含关键字和保留字。
Java中严格区分大小写,长度无限制。
标识符不能包含空格。
JAVA命名规范
:
包名:多单词组成时所有字母都小写:xxxyyyzzz。
例如:java.lang、com.atguigu.bean
类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz 大驼峰
例如:HelloWorld,String,System等
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz 小驼峰
例如:age,name,bookName,main,binarySearch,getName
常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
例如:MAX_VALUE,PI,DEFAULT_CAPACITY
三、流程控制语句
顺序、分支(if-else、switch-case)、循环(for、do{}while、while{})
C语言
字母数字下划线 ,数字不可以开头。不能是关键字
JAVA
由26个英文字母大小写,0-9 ,_或
$
组成
数字不可以开头。
不可以使用关键字和保留字,但能包含关键字和保留字。
Java中严格区分大小写,长度无限制。
标识符不能包含空格。
JAVA命名规范
:
包名:多单词组成时所有字母都小写:xxxyyyzzz。
例如:java.lang、com.atguigu.bean
类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz 大驼峰
例如:HelloWorld,String,System等
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz 小驼峰
例如:age,name,bookName,main,binarySearch,getName
常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
例如:MAX_VALUE,PI,DEFAULT_CAPACITY
break语句用于终止某个语句块的执行
{ ……
break;
……
}
break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块
label1: { ……
label2: { ……
label3: { ……
break label2;
……
}
}
}
四、输入输出
C语言
输出:printf("%d\n",a);
printf("%10.2f\n",b);//占10个位置,包含小数点,小数后面占两位(.2f说明小数后面占两位,长度变化)
输入:scanf("%d%s%l%f%c",a,b,c,d,f);//除了%c都可以分离‘ ’和‘\n’
JAVA
输出:System.out.println("samll");
输入:Scanner 变量1= new Scanner(System.in);
数据类型 变量2=变量1.next() / nextXxx();//根据需要安排不同数据类型;可以先定义,后赋值!
变量1.close();//关闭资源
键盘输入代码的四个步骤:
1. 导包:`import java.util.Scanner;`
2. 创建Scanner类型的对象:`Scanner scan = new Scanner(System.in);`
3. 调用Scanner类的相关方法(`next() / nextXxx()`),来获取指定类型的变量
4. 释放资源:`scan.close();
例如:
Scanner scanner = new Scanner(System.in);//System.in默认代表键盘输入
//③根据提示,调用Scanner的方法,获取不同类型的变量
System.out.print("请输入你的网名:");
String name = scanner.next();//.next():为String类型
System.out.print("请输入你的年龄:");
int age = scanner.nextInt();
System.out.print("请输入你的体重:");
double weight = scanner.nextDouble();
System.out.print("你是否单身(true/false):");
boolean isSingle = scanner.nextBoolean();
System.out.print("请输入你的性别:");
char gender = scanner.next().charAt(0);//先按照字符串接收,然后再取字符串的第一个字符(下标为0)
System.out.println("你的基本情况如下:");
System.out.println("网名:" + name + "\n年龄:" + age + "\n体重:" + weight +
"\n单身:" + isSingle + "\n性别:" + gender);
//④ 关闭资源
scanner.close();
五、switch语句
JAVA
switch(表达式)中表达式的值必须是下述几种类型之一:
byte,short,char,int,枚举 (jdk 5.0),String (jdk 7.0);
C语言
switch(表达式)中表达式的值必须是 整型 和 字符型,表达式可以是表达式 但必须是一个常量
共同点:case子句中的值必须是常量,不能是变量名或不确定的表达式值或范围;
switch(表达式){
case 常量值1:
语句块1;
//break;
case 常量值2:
语句块2;
//break;
// ...
[default:
语句块n+1;
break;
]
}
六、数组
JAVA
2. 数组(JAVA)
2.1静态初始化:如果数组变量的初始化和数组元素的赋值操作同时进行
一维数组声明和静态初始化格式1:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,...};
或
数据类型[] 数组名;
数组名 = new 数据类型[]{元素1,元素2,元素3,...};
注意:Java语言中声明数组时不能指定其长度(数组中元素的个数)。 例如: int a[5];
2.2动态初始化:数组变量的初始化和数组元素的赋值操作分开进行
数组存储的元素的数据类型[] 数组名字 = new 数组存储的元素的数据类型[长度];
或
数组存储的数据类型[] 数组名字;
数组名字 = new 数组存储的数据类型[长度];
2.3数组的长度:
JAVA:arr.length 指明数组arr的长度(即元素个数)
C;sizeof(arr)
2.4 二维数组 -->每行长度可能不一致
1 静态初始化:元素的数据类型[][] 二维数组的名称;
2 动态初始化:
格式1:规则二维表:每一行的列数是相同的
int[][] arr = new int[3][2];
格式2:不规则:每一行的列数不一样
//(1)先确定总行数
元素的数据类型[][] 二维数组名 = new 元素的数据类型[总行数][];
//此时只是确定了总行数,每一行里面现在是null
//(2)再确定每一行的列数,创建每一行的一维数组
二维数组名[行下标] = new 元素的数据类型[该行的总列数];
//此时已经new完的行的元素就有默认值了,没有new的行还是null
//(3)再为元素赋值
二维数组名[行下标][列下标] = 值;
3 遍历规则:
for(int i=0; i<二维数组名.length; i++){ //二维数组对象.length
for(int j=0; j<二维数组名[i].length; j++){//二维数组行对象.length
System.out.print(二维数组名[i][j]);
}
代码举例:
一维数组
//数组的定义
//静态定义
int[] arr = new int[]{1, 2, 3, 4, 5};//方法一
int[] arr1;
arr1 = new int[]{1, 2, 3, 4, 5};//方法二:用new创建数组实体
int[] arr2 = {1, 2, 3, 4, 5};//方法三 省略new int[] 默认为int
int arr3[] = {1, 2, 3, 4, 5};//方法四 类似c语言
/*错误情况:(重要tips)
一.
int[] arr4;
arr4={1, 2, 3, 4, 5};//不可以这样 注意与方法三的区别
二.
int[] arr5=new int[5]{1, 2, 3, 4, 5};//错误 不可以int[5] 相当于动态和静态一起使用了
*/
//动态定义:后续可以循环给每个元素赋值
int[] arr01=new int[5];//方法一
int[] arr02;//方法二
arr02=new int[5];
System.out.println("arr02的地址:"+arr02);
System.out.println("arr02的长度:"+arr02.length);
System.out.print("arr02的元素为:[");
for (int i = 0; i < arr02.length; i++) {
if (i==0){
System.out.print(i);
} else {
System.out.print(" ,"+i);
}
}
System.out.print("]");
System.out.println();
//默认值分析****(不同点)
int[] a1=new int[5];//默认0
System.out.println(a1[0]);
double[] a2=new double[5];//默认0.0
System.out.println(a2[0]);
boolean[] a3=new boolean[5];//默认false
System.out.println(a3[0]);
char[] a4=new char[5];//默认0 不是‘0’
System.out.println(a4[0]);
String [] a5=new String[5];//默认null
System.out.println(a5[0]);
// 定义数组,存储3个元素
int[] arr001 = new int[3];
//数组索引进行赋值
arr001[0] = 5;
arr001[1] = 6;
arr001[2] = 7;
//输出3个索引上的元素值
System.out.println(arr001[0]);//5
System.out.println(arr001[1]);//6
System.out.println(arr001[2]);//7
//定义数组变量arr2,将arr的地址赋值给arr2****(不同点)
int[] arr002 = arr001;
arr002[1] = 9;
System.out.println(arr002[0]);//5
System.out.println(arr002[1]);//9
System.out.println(arr002[2]);//7
二维数组 : 最大区别是 每行长度可能不一致!
int[][] arr = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9, 10}};//声明与初始化必须在一句完成
System.out.println(arr[0].length);//3每列长度不一样 即列数不一致 ****(不同点)
System.out.println(arr[1].length);//3
System.out.println(arr[2].length);//4
int[][] arr1 = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9, 10}};
int[][] arr2;
arr2 = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9, 10}};
//错误示范 不可以写int[3][3] 和一维一样,只能是int[][]
//arr2 = new int[3][3]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9, 10}};//错误,静态初始化右边new 数据类型[][]中不能写数字
*/
//举例说明:
//1、声明一个二维数组,并且确定行数
//因为每一行的列数不同,这里无法直接确定列数
int[][] arr = new int[5][];
//2、确定每一行的列数
for(int i=0; i<arr.length; i++){
/*
arr[0] 的列数是1
arr[1] 的列数是2
arr[2] 的列数是3
arr[3] 的列数是4
arr[4] 的列数是5
*/
arr[i] = new int[i+1];//有点类似一维数组了 *****(不同点)
}
//3、确定元素的值 遍历方法 *****(重要)
for(int i=0; i<arr.length; i++){
for(int j=0; j<arr[i].length; j++){
arr[i][j] = i+1;
}
}
//4、遍历显示
for(int i=0; i<arr.length; i++){
for(int j=0; j<arr[i].length; j++){
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
C语言
数组(C)
//静态初始化
int arr[5]={1,2,3,4,5};//方法一:arr[5] 5写不写都得
int arr1[5];//方法二
int arr2[5]={1,2,3,4,5};
strcpy(arr1,arr2);//不arr1={1,2,3,4,5};
//动态定义数组
int *p=(int *)maloc(sizeof(int)*5);//动态定义数组 p指针指向一个大小为5的地址空间
//二维数组
int arr[][]={{1,2},{},{3,4,5}}//此处为arr[3][3] 行列都是三
int arr[2][2]={{1},{}}//此处为arr[2][2] 行列都是二