字节数组

C语言 08-数组

冷暖自知 提交于 2020-01-30 04:32:16
本文目录 地址 一、一维数组 二、二维数组   说明:这个C语言专题,是学习iOS开发的前奏。也为了让有面向对象语言开发经验的程序员,能够快速上手C语言。如果你还没有编程经验,或者对C语言、iOS开发不感兴趣,请忽略。 为了让大家更好地学习和理解数组,我们先来认识一下内存中的"地址"。 地址   1.计算机中的内存是以字节为单位的存储空间。内存的每一个字节都有一个唯一的编号,这个编号就称为地址。凡存放在内存中的程序和数据都有一个地址,也就是说,一个函数也有自己的内存地址。   2.当定义一个变量时,系统就分配一个带有唯一地址的存储单元来存储这个变量。比如: char a = 'A'; // A的ASCII值为65 int b = 66; 在16bit编译器环境下,系统为a、b分别分配1个字节、2个字节的存储单元。变量存储单元的第一个字节的地址就是该变量的地址。 可以看出,变量a的地址是ffc3;变量b的地址是ffc1。内存中存储的都是2进制数据。 3.在调试过程中,我们采取打印的方式查看变量的地址: int c = 10; // 以16进制形式输出地址 printf("16进制:%x\n", &c); // 以10进制形式输出地址 printf("10进制:%d", &c); 输出结果: 一、一维数组 1.一维数组的定义 * 定义的形式为:类型 数组名[元素个数] int a[5]

java基础-IO流

大憨熊 提交于 2020-01-26 03:19:57
IO流概述及其分类 * IO流用来处理设备之间的数据传输 * Java对数据的操作是通过流的方式 * Java用于操作流的类都在IO包中 * 流按流向分为两种:输入流,输出流。 * 流按操作类型分为两种: * 字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的 * 字符流 : 字符流只能操作纯字符数据,比较方便。 IO流常用父类 * 字节流的抽象父类: * InputStream * OutputStream * 字符流的抽象父类: * Reader * Writer IO程序书写 * 使用前,导入IO包中的类 * 使用时,进行IO异常处理 * 使用后,释放资源 FileInputStream * read()一次读取一个字节 * FileInputStream fis = new FileInputStream("aaa.txt"); //创建一个文件输入流对象,并关联aaa.txt int b; //定义变量,记录每次读到的字节 while((b = fis.read()) != -1) { //将每次读到的字节赋值给b并判断是否是-1 System.out.println(b); //打印每一个字节 } fis.close(); //关闭流释放资源 read()方法返回值为什么是int read()方法读取的是一个字节,为什么返回是int

java基础——IO流

寵の児 提交于 2020-01-26 03:19:18
###20.01_IO流(IO流概述及其分类) * 1.概念 * IO流用来处理设备之间的数据传输 * Java对数据的操作是通过流的方式 * Java用于操作流的类都在IO包中 * 流按流向分为两种:输入流,输出流。 * 流按操作类型分为两种: * 字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的 * 字符流 : 字符流只能操作纯字符数据,比较方便。 * 2.IO流常用父类 * 字节流的抽象父类: * InputStream * OutputStream * 字符流的抽象父类: * Reader * Writer * 3.IO程序书写 * 使用前,导入IO包中的类 * 使用时,进行IO异常处理 * 使用后,释放资源 ###20.02_IO流(FileInputStream) * read()一次读取一个字节 * FileInputStream fis = new FileInputStream("aaa.txt"); //创建一个文件输入流对象,并关联aaa.txt int b; //定义变量,记录每次读到的字节 while((b = fis.read()) != -1) { //将每次读到的字节赋值给b并判断是否是-1 System.out.println(b); //打印每一个字节 } fis.close(); //关闭流释放资源 ###20

JavaSE学习总结第20天_IO流2

杀马特。学长 韩版系。学妹 提交于 2020-01-26 03:08:57
20.01 递归概述和注意事项 递归:方法定义中调用方法本身的现象 递归注意事项: 1.要有出口,否则就是死递归 2.次数不能太多,否则就内存溢出 3.构造方法不能递归使用 20.02 递归求阶乘的代码实现及内存图解 例: 1 public class Practice 2 { 3 public static void main(String[] args) 4 { 5 System.out.println(jieCheng(5)); 6 } 7 public static int jieCheng(int i) 8 { 9 if(i == 1) 10 return 1; 11 else 12 return i * jieCheng(i - 1); 13 } 14 } 20.03 不死神兔问题案例 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少? 第1个月:1 第2个月:1 第3个月:2 第4个月:3 第5个月:5 第6个月:8 ... 由此可见兔子对象的数据是:1,1,2,3,5,8... 规则:A:从第三项开始,每一项是前两项之和 B:而且说明前两项是已知的 1 public class Practice 2 { 3 public static void main(String[] args

memset函数用法

折月煮酒 提交于 2020-01-26 01:53:29
1. memset()函数原型是extern void *memset(void *buffer, int c, int count)   buffer:为指针或是数组   c:是赋给buffer的值 count:是buffer的长度 这个函数在socket中多用于清空数组.如:原型是memset(buffer, 0, sizeof(buffer)), Memset 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’; 例:char a[100];memset(a, '/0', sizeof(a)); memset可以方便的清空一个结构类型的变量或数组。 如: struct sample_struct {   char csName[16];   int iSeq;   int iType; }; 对于变量:struct sample_struct stTest; 一般情况下,清空stTest的方法: stTest.csName[0]='/0'; stTest.iSeq=0; stTest.iType=0; 用memset就非常方便: memset(&stTest,0,sizeof(struct sample_struct)); 如果是数组: struct sample_struct TEST[10]; 则 memset(TEST,0

【Java基础】常用IO流的基本用法演示(持续更新)

主宰稳场 提交于 2020-01-25 02:29:55
文章目录 常用IO流 FileInputStream——FileOutputStream FileReader——FileWriter BufferedInputStream——BufferedOutputStream BufferedReader——BufferedWriter ByteArrayInputStream——ByteArrayOutputStream CharArrayReader——CharArrayWriter StringReader——StringWriter InputStreamReader——OutputStreamWriter ObjectInputStream——ObjectOutputStream PrintStream PrintWriter ZipInputStream——ZipOutputStream SequenceInputStream 常用IO流 类型 说明 文件流 对文件进行读、写操作 :FileReader、FileWriter、FileInputStream、FileOutputStream 缓冲流 在读入或写出时,数据可以基于缓冲批量读写,以减少I/O的次数:BufferedReader、BufferedWriter、BufferedInputStream、BufferedOutputStream 内存流 1.从

Java基础语法

梦想与她 提交于 2020-01-21 23:47:33
整理一些之前学习Java基础语法的部分知识点。 常量 常量:是指在Java程序中固定不变的数据。 分类 类型 含义 数据举例 整数常量 所有的整数 0,1,567,-9 小数常量 所有的小数 0.0, -0.1, 2.55 字符常量 单引号引起来,只能写一个字符,必须有内容 'a' , ' ', '好' 字符串常量 双引号引起来,可以写多个字符,也可以不写 "A" ,"Hello" ,"你好" ,"" 布尔常量 只有两个值(流程控制中讲解) true , false 空常量 只有一个值(引用数据类型中讲解) null 变量 变量:常量是固定不变的数据,那么在程序中可以变化的量称为变量。 数据类型 数据类型分类 Java的数据类型分为两大类: 基本数据类型:包括 整数 、 浮点数 、 字符 、 布尔 。 引用数据类型:包括 类 、 数组 、 接口 。 基本数据类型 四类八种基本数据类型: 数据类型 关键字 内存占用 取值范围 字节型 byte 1个字节 -128~127 短整型 short 2个字节 -32768~32767 整型 int(默认) 4个字节 -2的31次方~2的31次方-1 长整型 long 8个字节 -2的63次方~2的63次方-1 单精度浮点数 float 4个字节 1.4013E-45~3.4028E+38 双精度浮点数 double(默认) 8个字节 4.9E

Java面试题1-Java基础

别等时光非礼了梦想. 提交于 2020-01-20 10:47:39
实例方法和静态方法有什么不一样 1.在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。 而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。 2.静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许 访问实例成员变量和实例方法,如果需要调用,则需要先实例化;实例方法则无此限制 3.静态方法是在类中使用staitc修饰的方法,在类定义的时候已经被装载和分配。而非静态方法是 不加static关键字的方法,在类定义时没有占用内存,非静态方法只有在类被实例化成对象时,对象 调用该方法才被分配内存 Java中的异常有哪几类?分别怎么使用 Throwable是所有异常的根,java.lang.Throwable Error:错误,Java.lang.Error Exception:异常,java.lang.Exception Exception分为CheckedException和RuntimeException,所有RuntimeException类及其子类的实例 被称为Runtime异常,不属于该范畴的异常则被称为CheckedException checkedException: 只有Java语言提供了Checked异常,Java认为checked异常都是可以被处理的异常,

加密与安全

泪湿孤枕 提交于 2020-01-19 17:49:08
一, URL 编码 为什么要使用 URL 编码? 我们都知道Http协议中参数的传输是 "key=value" 这种简直对形式的,如果要传多个参数就需要用 “&” 符号对键值对进行分割。如 "?name1=value1&name2=value2" ,这样在服务端在收到这种字符串的时候,会用 “&” 分割出每一个参数,然后再用 “=” 来分割出参数值。 现在有这样一个问题,如果我的参数值中就包含=或&这种特殊字符的时候该怎么办。 比如说 “name1=value1” ,其中value1的值是 “va&lu=e1” 字符串,那么实际在传输过程中就会变成这样 “name1=va&lu=e1” 。我们的本意是就只有一个键值对,但是服务端会解析成两个键值对,这样就产生了奇异。 如何解决上述问题带来的歧义呢?解决的办法就是对参数进行URL编码? URL编码只是简单的在特殊字符的各个字节前加上%,例如,我们对上述会产生奇异的字符进行URL编码后结果: “name1=va%26lu%3D” ,这样服务端会把紧跟在“%”后的字节当成普通的字节,就是不会把它当成各个参数或键值对的分隔符。 类似于这种 实际操作 public static void main(String[] args) { //url编码 String str="测试"; String urlStr=URLEncoder.encode

把字符串字节数组写入文件

橙三吉。 提交于 2020-01-18 08:26:29
/** * Java,把字符串字节数组写入文件 * @param byt * @throws Exception */ private static void byte2File(byte[] byt) throws Exception { if (null == byt) { return; } String targetFile = "C:\\Users\\fileTestTarget.txt"; File file = new File(targetFile); OutputStream output = new FileOutputStream(file); BufferedOutputStream out = new BufferedOutputStream(output); InputStream in = new ByteArrayInputStream(byt); byte[] buff = new byte[1024]; int len = 0; while ((len = in.read(buff)) != -1) { out.write(buff, 0, len); } in.close(); out.close(); System.out.println("---- done ----"); } 如果入参是字符串“HelloWorld”的字节数组