赋值

c/c++学习01

↘锁芯ラ 提交于 2020-01-30 21:05:39
c++指针初始赋值: //指针初始赋值 int* a = new int(3); //第二种赋值 int 初始值 = 100; int *b = &初始值; //由new分配的内存块通常使用过后都要用delete来释放内存 delete a; 来源: https://www.cnblogs.com/wyzRain/p/12243764.html

结构体变量 和 结构体指针

独自空忆成欢 提交于 2020-01-30 10:24:57
为什么结构体在声明变量不需要去动态的分配内存,而声明结构体指针后,如果对成员进行操作需要分配内存,或者需要定义。 首先变量的声明与定义: extern int i; //声明,不是定义 int i; //声明,也是定义 编译器会随机分配一个定义给i,这个地址肯定是合法的。 然后指针变量的声明与初始化: int *i; //声明一个指针变量 *i = 3; //直接将值赋值给i所指向的地址。因为我们未对i进行初始化,所以我们也不知道i到底指向哪。有一点可以肯定的是这个地址不会是存储变量的内存空间,有兴趣的可以将这个值打印出来分析。(有关内核空间的内存有机会总结一篇) 现在回到结构体,直接看下图 我们会发现结构体指针变量的地址为0,这显然不是一个合法的地址,所以后面的赋值操作就会发生段错误。 所以必须对指针初始化,所谓的初始化就是让指针指向一个合法有效的内存空间,而分配空间的方法有两种:静态分配,动态分配。下面的是静态的,动态的就是malloc()函数 这个就可以正常的赋值。 来源: https://www.cnblogs.com/hgstudy/p/9610985.html

Java学习笔记(五)——数组

久未见 提交于 2020-01-30 04:22:14
一、数组使用方法 1、 声明数组 语法: 数据类型[ ] 数组名; 或者 数据类型 数组名[ ]; 其中,数组名可以是任意合法的变量名 2、 分配空间 简单地说,就是指定数组中最多可存储多少个元素 语法: 数组名 = new 数据类型 [ 数组长度]; 3、 赋值 分配空间后就可以向数组中放数据了,数组中元素都是通过下标来访问的,例如向 scores 数组中存放学生成绩 4、 处理数组中数据 我们可以对赋值后的数组进行操作和处理,如获取并输出数组中元素的值 二、Arrays 中常用的方法: 1、 排序 语法: Arrays.sort(数组名); 可以使用 sort( ) 方法实现对数组的排序,只要将数组名放在 sort( ) 方法的括号中,就可以完成对该数组的排序(按升序排列) 2、 将数组转换为字符串 可以使用 Arrays.toString( ) 方法将一个数组转换成字符串,该方法按顺序把多个数组元素连接在一起,多个元素之间使用逗号和空格隔开 三、使用foreach操作数组 1、语法 2、一个demo 四、二维数组 1、 声明数组并分配空间 2、 赋值 二维数组的赋值,和一维数组类似,可以通过下标来逐个赋值,注意索引从 0 开始 3、 处理数组 二维数组的访问和输出同一维数组一样,只是多了一个下标而已。在循环输出时,需要里面再内嵌一个循环

final关键字

有些话、适合烂在心里 提交于 2020-01-30 00:01:28
一、final的概念 继承的出现提高了代码的复用性,并方便开发。但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写。可是当子类继承了这些特殊类之后,就可以对其中的方法进行重写,那怎么解决呢? 要解决上述的这些问题,需要使用到一个关键字final,final的意思为最终,不可变。final是个修饰符,它可以用来修饰类,类的成员,以及局部变量。 二、final的特点 1、final修饰类不可以被继承,但是可以继承其他类。 class Yy {} final class Fu extends Yy{} // 可以继承 Yy 类 class Zi extends Fu {} // 不能继承 Fu 类 2、final修饰的方法不可以被覆盖(重写),但父类中没有被final修饰方法,子类覆盖后可以加final。 class Fu { // final 修饰的方法,不可以被覆盖,但可以继承使用 public final void method1(){} public void method2(){} } class Zi extends Fu { // 重写 method2 方法 public final void method2(){} } 3、final修饰的变量称为常量,这些变量只能赋值一次。 final int i = 20; i = 20

关于数组的一道典型题

情到浓时终转凉″ 提交于 2020-01-29 23:15:12
定义第一个数组,定义完毕后,给数组元素赋值。赋值完毕后,再输出数组名称和元素。 定义第二个数组,定义完毕后,给数组元素赋值。赋值完毕后,再输出数组名称和元素。 定义第三个数组,把第一个数组的地址值赋值给它。(注意类型一致),通过第三个数组的名称去把元素重新赋值。 最后,再次输出第一个数组数组名称和元素。 public class 数组 { public static void main ( String [ ] args ) { int arr [ ] = new int [ 3 ] ; arr [ 0 ] = 1 ; arr [ 1 ] = 2 ; arr [ 2 ] = 3 ; System . out . println ( arr ) ; System . out . println ( arr [ 0 ] ) ; System . out . println ( arr [ 1 ] ) ; System . out . println ( arr [ 2 ] ) ; int arr1 [ ] = new int [ 3 ] ; arr1 [ 0 ] = 4 ; arr1 [ 1 ] = 5 ; arr1 [ 2 ] = 6 ; System . out . println ( arr1 ) ; System . out . println ( arr1 [ 0 ] ) ;

mysql存储过程实战

≯℡__Kan透↙ 提交于 2020-01-29 11:30:44
今天科比离去,今天肺炎病毒持续肆虐。。。 意识到生命的脆弱,今天我继续前行,比以往更加坚定和紧迫,这辈子不活好自己就算白来一趟。 最近需要用到mysql存储过程去处理一些表数据,然后利用java poi导出excel数据。 既然用了那就总结一下用到的知识点: 1.声明变量 declare 2.参数 in/out 参数名 数据类型 3.查询赋值 select into 和oracle相似。 4.结果集循环 声明游标,然后打开赋值循环,再赋值。 5.case..when语句 可以直接case 6.条件控制语句 if .. then else end if; 7.循环语句 对比oracle for循环,使用while 8.mybatis如何调用? <select id="updateWorkDt" parameterType="map" useCache="false" statementType="CALLABLE"> <![CDATA[ call proc_update_work_dt(#{year,mode=IN,jdbcType=VARCHAR},#{month,mode=IN,jdbcType=VARCHAR}); ]]> </select> 有不懂得直接看我的存储过程(省略了部分) : DROP PROCEDURE IF EXISTS `proc_update_work_dt

排序算法汇总(二)

心已入冬 提交于 2020-01-29 03:16:20
我们继续接着插入排序法往下聊。 直接插入排序法的时间复杂度问题 插入排序法(或者叫做直接插入排序法)的原理很简单,也很自然,而且也是后面很多排序法的基础,是不得不会的。它的思想是,每一次将待排序的数据插入到已排好顺序的数组中去。所以一开始,任何一个数据都认为是已排好序的。也就是数组的首元素A[0],设数组长度为n,那么第一次插入是从A[1]开始的,先将A[0]赋值给临时变量key.这是一个临时保存待插入数据的新内存空间,防止数据丢失的,而将A[0]赋值给A[1].key与A[0]比较,若大,则将key赋值给A[1],否则将key赋值给A[0].如此就完成了A[1]的插入操作。这是完全可行的。如果现在是A[j] (j<n)要插入,那么一定是A[:j]已经排好序了,而插入A[j]也是要将它赋值给key,将A[j-1]赋值给A[j],相当于数据后移,先后移,再进行比较,若key大,则key赋值给A[j],否则与A[j-1]比较,这里涉及到一个迭代过程,用i标记前j个元素的下标,将j当做一个常数,i递减。只有当i<0或者key大于等于某个A[i] 时循环才会退出。将key的值赋值给A[i+1],操作完成。 最后,由于数组长度时有限的,当k遍历到n时,整个插入排序的算法结束。下面是算法导论中提供的伪码: 插入排序法最坏和平均情况下时间复杂度都是O(n^2),最好情况下时间复杂度为O(n)

记录6--Java栈堆

倖福魔咒の 提交于 2020-01-28 15:07:02
class Person { int age; } public class LearnHeap { public static void main(String args[]){ int a=18; Person person = new Person(); person.age =18; change(a,person); System.out.println("a="+ a+",and person.age = "+person.age); } static void change(int a1, Person person){ a1 = 20; person.age= 2020; System.out.println("a1="+ a1+",and age1 = "+person);//输出地址 } } 以上程序内存加载的执行步骤: 第1步 —— main()函数是程序入口,JVM先执行,首先将main方法压入栈中,在栈内存中开辟一个空间,存放int类型变量a,同时附值18。       在堆中分配一片区域,用来存放和创建Person对象,这片内存区域会有属于自己的内存地址,假设是1001,然后给成员变量赋值,age=18       执行结束后,构造防范弾栈,Person创建完成,将Person的内存地址1001赋值给person(此处person小写, 是引用变量类型

结对编程

一个人想着一个人 提交于 2020-01-28 13:14:19
简介 对伙伴的代码进行审查 合作伙伴: 尉安瑞 伙伴 Coding 参考文章: 谷歌是如何做代码审查的 C++代码审---参考林锐高质量C/C ++ 整天说Code Review重要,你知道应该关注哪些关键点吗? - CSDN博客 一.代码审查表分析 功能模块名称 无环图应用 审查人 Stone 审查日期 2018.4.4  代码名称 DYJ  代码作者 尉安瑞  文件结构 重要性 审查项 结论 头文件和定义文件的名称是否合理? 是    头文件和定义文件的目录结构是否合理? 是    版权和版本声明是否完整? 是  重要 头文件是否使用了 ifndef/define/endif 预处理块? 无  无  头文件中是否只存放“声明”而不存放“定义” 无        程序的版式 重要性 审查项 结论   空行是否得体? 否    代码行内的空格是否得体? 否    长行拆分是否得体? 是    “{” 和 “}” 是否各占一行并且对齐于同一列? 否  重要 一行代码是否只做一件事?如只定义一个变量,只写一条语句。 否  重要 If、for、while、do等语句自占一行,不论执行语句多少都要加 “{}”。 否  重要 在定义变量(或参数)时,是否将修饰符 * 和 & 紧靠变量名?注释是否清晰并且必要? 否  重要 注释是否有错误或者可能导致误解? 无  重要 类结构的public,

初探Spring框架之———IOC

旧城冷巷雨未停 提交于 2020-01-28 04:37:46
一、 首先解释一下什么是Spring框架,以及Spring框架的作用 1、Spring框架:Spring是一个full-stack(一站式)的轻量级 开源 框架,以 IOC (Inverse Of Control: 控制反转)和 AOP (Aspect Oriented Programming:面向切面编程)为内核。简单来说, Spring是一个分层的JavaSE/EE full-stack 轻量级开源框架。 2、作用:解决企业应用开发的复杂性 二、什么是IOC? 1、IOC(Inversion of Control) :就是控制反转。 控制反转指的就是将对象的创建权交给了Spring来管理,其作用是实现了程序的解耦合(解耦)或者理解为降低了程序间的依赖关系,从而提高程序间的独立性,满足开闭原则,提高了可复用性和可修改性。 可以解释为:原始的创建对象的方法都是使用new一个对象,这样就使得程序间的依赖关系很强,不方便修改和复用,所以我们常常采用 工厂方法模式+反射+配置文件 来改进,而 IOC的底层原理就是使用工厂方法设计模式+反射+XML配置文件或注解来创建对象 ,只不过原始的创建对象的任务是交给程序员来编写,而现在使用Spring框架后,创建对象的任务就交给了Spring来管理。 2、关于IOC的一些细节 BeanFactory是Spring的IOC核心容器中的顶层接口