基础语法 简单数组 声明数组 初始化数组 下标访问 计算数组长度 数组使用小结 字符与字符串 char 字符 宽字符 字符串 (String) 字符串与普通数组的区别 小拓展: 字符串的常用函数 字符串长度...比较字符串内容 字符串的复制 字符串的拼接 基础语法 简单数组 把具有相同类型的若干个数据按一定顺序组织起来,这些同类数据元素的集合就称为数组。...注意,C语言中的数组与其他编程语言的数组或列表有相似性,但本质上又有不同。...实际上,C语言的char就是一个整数,它的范围是0~127 1 char s = 'a'; 2 char s1 = 97; 3 4 // 可以看到,s和s1打印的结果完全相同 5...1 array size is 13 2 string size is 12 可见str数组共用13个元素,但只有12个有效字符,最后一个为\0结束符 比较字符串内容 当我们要判断两个字符串是否相同时
如果要在所有平台上得到相同结果,要使用StrictMath类。...3.6.2 拼接 String 可以使用+拼接字符串。当一个字符串与非字符串拼接时,后者将被转换成字符串。...如果复制一个字符串变量,原始字符串与复制的字符串可以共享相同的字符串,而不必担心字符串被莫名其妙修改的问题。 Java设计者认为共享带来的高效远远胜于提取、拼接字符串带来的低效。...注意: 一定不要使用 == 检查两个字符串是否相等!这只能判断两个字符串是否放在同一内存位置上。虽然放在同一位置上的字符串必然相等,但是完全有可能将内容相同的多个字符串拷贝防止在不同的位置上!...注意: 与C++不同,Java没有重载运算符的功能。虽然Java设计者为String重载了 + 运算符,但没有重载其他运算符,也不支持程序员重载运算符。
语言无区别 八、字符串拼接 1.string可以通过+来进行字符串拼接 string str = "123"; str = str + "456";//正确 str = str + 1;//正确,默认调用...1.ToString(); str += "1" + 4 + true;//正确,复合运算和ToString()都起作用 2.字符串拼接方式2 string.Format("待拼接内容",内容1,内容2...符号与C语言相同 1.不同数值类型之间 规则:可以随意进行条件运算符比较 int i = 5; float f = 1.2f short s = 2; byte by = 20; uint ui =...符号和规则与C语言中相同 1.注意 逻辑运算符当中逻辑非(!)...int c = a & b; // 001 & 101 = 001 所以c也就是1 2.位或运算 | 有1则1 1|0=1 3.异或运算 ^ 规则:相同为0 不同为1 1 ^ 1 = 1 0 ^
字符串不属于8中基本数据类型,字符串对象属于引用数据类型,在上面把“abc”同时赋值给了st1和st2两个字符串对象,指向的都是同一个地址,所以第一个打印语句中的==比较输出结果是 true 然后我们看第二个打印语句中的...当且仅当该参数不为null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。 注意这个相同字符序列,在后面介绍的比较两个数组,列表,字典是否相等,都是这个逻辑去写代码实现。...由于st1和st2的值都是“abc”,两者指向同一个对象,当前字符序列相同,所以第二行打印结果也为true。 下面我们来画一个内存图来表示上面的代码,看起来更加有说服力。 ?...第二个对象在堆内存为啥是一个拷贝的副本呢,这个就需要在JDK API 1.6找到String(String original)这个构造方法的注释:初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列...把String对象(0x0022)赋值给st3 所以,st3和st2进行==判断结果是不相等,因为两个对象内存地址不同。
字符串的排列 力扣题目链接[1] 输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。...(N - 1) * ... * 1 种不同的方式。...res = []; // 初始化结果数组 let c = s.split(''); // 对字符串进行分割 const dfs = (x) => { // 递归字符串...直到固定的位置是字符串分割数组的最后一项时,意味着再也无需交换元素,此时的数组就是已经执行过交换操作并且不重复的,将该数组拼接成字符串并放入结果数组中。这也就是递归的终止条件。...最终返回结果数组即可。 总结 本题考查字符串的搜索与回溯。难度系数为困难。核心逻辑在于从头开始固定元素,并依次将后续元素与之交换,达到排列的目的。然后递归处理后续元素进行固定和交换。
,定义为undefined,未定义或者定义了,但未初始化 //alert(null == undefined);---> 显示结果是true //alert(...null === undefined);---> 显示结果是false 二、数据类的转换 **2.1 隐式转换** 隐式转换常用于if判断等需要直接结果的地方....// parseFloat()和parseInt非常相似, // 不同之处在与parseFloat会解析第一个 ....变量与字符串,变量与变量要使用+来拼接,区分开PHP** **4.... 如何打印一下字符串: var s = '我很喜欢 \"雷锋 \'的精神\' \"'; console.log(s); 字符串长度 length属性用来获取字符串的长度 var
字符串不属于8中基本数据类型,字符串对象属于引用数据类型,在上面把“abc”同时赋值给了st1和st2两个字符串对象,指向的都是同一个地址,所以第一个打印语句中的==比较输出结果是 true 然后我们看第二个打印语句中的...当且仅当该参数不为null,并且是与此对象表示相同字符序列的String 对象时,结果才为 true。”...由于st1和st2的值都是“abc”,两者指向同一个对象,当前字符序列相同,所以第二行打印结果也为true。下面我们来画一个内存图来表示上面的代码,看起来更加有说服力。...第二个对象在堆内存为啥是一个拷贝的副本呢,这个就需要在JDK API 1.6找到String(String original)这个构造方法的注释:初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列...5)把String对象(0x0022)赋值给st3 所以,st3和st2进行==判断结果是不相等,因为两个对象内存地址不同。
字符串不属于8中基本数据类型,字符串对象属于引用数据类型,在上面把“abc”同时赋值给了st1和st2两个字符串对象,指向的都是同一个地址,所以第一个打印语句中的==比较输出结果是 true 然后我们看第二个打印语句中的...当且仅当该参数不为null,并且是与此对象表示相同字符序列的String 对象时,结果才为 true。”...由于st1和st2的值都是“abc”,两者指向同一个对象,当前字符序列相同,所以第二行打印结果也为true。 下面我们来画一个内存图来表示上面的代码,看起来更加有说服力。 ?...第二个对象在堆内存为啥是一个拷贝的副本呢,这个就需要在JDK API 1.6找到String(String original)这个构造方法的注释:初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列...5)把String对象(0x0022)赋值给st3 所以,st3和st2进行==判断结果是不相等,因为两个对象内存地址不同。
(1)、我们需要一个字段同时显示公司名和公司地址,但这两个信息存储在不同表的列中。...(2)、省份、城市、邮政编码存储在不同的列中(大多数情况下是这样),但邮件标签打印程序需要把它们作为一个有恰当顺序、格式的字段打印出来。...而不是检索出来,再到客户端进行初始化。 这时,计算字段就可以派上用场了,计算字段并不实际存在与数据表中,计算字段是运行在SELECT语句内创建的。...字段:字段基本上与列的疑似相同,经常互换使用,不过数据库列一般称为列,而术语字段通常与计算字段一起使用。 这里需要注意:只有数据库的知道SELECT语句中哪些列是实际的表列,那些列是计算字段。...ok,完成需求 注意:不同的DBMS(数据库管理系统)使用字符串拼接的操作符不同,Acesss和SQL Server使用的是'+',DB2、Oracle、PostgreSQL、SQLite和Open Office
字符串不属于8中基本数据类型,字符串对象属于引用数据类型,在上面把“abc”同时赋值给了st1和st2两个字符串对象,指向的都是同一个地址,所以第一个打印语句中的==比较输出结果是 true 然后我们看第二个打印语句中的...当且仅当该参数不为null,并且是与此对象表示相同字符序列的String 对象时,结果才为 true。”...由于st1和st2的值都是“abc”,两者指向同一个对象,当前字符序列相同,所以第二行打印结果也为true。 下面我们来画一个内存图来表示上面的代码,看起来更加有说服力。...第二个对象在堆内存为啥是一个拷贝的副本呢,这个就需要在JDK API 1.6找到String(String original)这个构造方法的注释:初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列...5)把String对象(0x0022)赋值给st3 所以,st3和st2进行==判断结果是不相等,因为两个对象内存地址不同。
环境变量按照其作用范围不同大致可以分为系统级环境变量和用户级环境变量。.../bin/bash#child.shecho "child.sh中输出var_global变量:${var_global}" 然而直接在交互式Shell环境中打印${var_global}是得不到结果的..., 格式为: “1” “2” … “n” 使用循环打印所有输入参数可以看出区别 演示: 直接输出所有输入参数, 与循环方式输出所有输入参数(使用双引号包含 * 与 @ ),创建test.sh: 1234567891011121314151617181920212223242526272829303132...但字符串中不能出现空格,否则空格后边的字符串会作为其他变量或者命令解析。...:的意义在于,如果不加:默认空字符串也表示str有设定值,而加上:则表示如果str设定了值,但值为空字符串,依然当作str没有设定值处理。
在main函数中,使用简短变量赋值声明并初始化了变量m,给数据字段指定的值为相应的数据类型。 使用点表示法访问数据字段并将其打印到控制台。 7.2 创建结构体 声明结构体后,就可通过多种方式创建它。...a := b 赋值后,a与b相同,但它是b的副本,而不是指向b的引用。修改b不会影响a,反之亦然。 要修改原始结构体实例包含的值,必须使用指针。...` 9.3 拼接字符串 要拼接(合并)字符串,可将运算符+用于字符串变量。还可使用复合赋值运算符+=来拼接字符串。...9.3.1 使用缓冲区拼接字符串 对于简单而少量的拼接,使用运算符+和+=的效果虽然很好,但随着拼接操作次数的增加,这种做法的效率并不高。...如果需要在循环中拼接字符串,则使用空的字节缓冲区来拼接的效率更高。
第2章 StringBuilder类 2.1 StringBuilder概述 我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。...登录案例共分三步: 启动项目,初始化用户数据 用户输入账号密码 比对账号密码(账号密码必须相同) 注册与登录步骤类似: 启动项目,初始化用户数据 用户输入要注册的账号密码 比对账号密码(有相同的账号不可以...打印结果,并说明为什么是这个结果? 调用s1的equals()方法和s2比较是否相等?打印结果,并说明为什么是这个结果? 说明上述两个结果为什么不同?...打印结果,并说明为什么是这个结果? 如果不区分大小写的判断,需要怎样判断?...5.1.11 练习字符串方法:完成1.3.3中最后的习题 5.2 代码题: 5.2.1 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
需要显示公司名,同时还需要显示公司的地址,但这两个信息存储在不同的表列中。 城市、州和邮政编码存储在不同的列中,但邮件标签打印程序需要把它们作为一个有恰当格式的字段检索出来。...列数据是大小写混合的,但报表程序需要把所有数据按大写表示出来。 物品订单表存储物品的价格和数量,不存储每个物品的总价格。但为打印发票,需要物品的总价格。 需要根据表数据进行诸如总数、平均数的计算。...字段(field) 基本上与列(column)的意思相同,经常互换使用,不过数据库列一般称为列,而术语字段通常与计算字段一起使用。...从客户端(如应用程序)来看,计算字段的数据与其他列的数据的返回方式相同。 提示:客户端与服务器的格式 在 SQL 语句内可完成的许多转换和格式化工作都可以直接在客户端应用程序内完成。...从输出看到,结果与以前的相同,但现在列名为 vend_title,任何客户端应用都可以按名称引用这个列,就像它是一个实际的表列一样。 在很多 DBMS 中,AS 关键字是可选的,不过最好使用它。
简单的说:就是 Java 中有好多现成的类库,其中封装了许多函数,只提供函数名和参数,但隐藏了函数的具体实现,这些可见的部分作为与外界联系的桥梁,也就是我们所称的 API ,不过由于Java是开源的,所以这些隐藏的实现我们也是可以看到的...hashCode() 方法不是一个 100% 可靠的方法,个别情况下,不同的对象生成的 hashcode 也可能会相同。...如果大量内容都是用 equals() 去比对,效率显然是比较低的,所以每次比对之前都去使用 hashCode() 去对比,如果返回的 hashCode 不同,代表两个对象肯定不相同,就可以直接返回结果了...),但 hashcode 不相同的情况。...结果应是一个简明但易于读懂的信息表达式。因此建议所有子类都重写此方法。 2.6 字符串使用 += 赋值后,原始的String对象中的内容会改变吗?
通过构造方法创建 通过 new 创建的字符串对象,每一次 new 都会申请一个内存空间,虽然内容相同,但是地址值不同 直接赋值方式创建 以“”方式给出的字符串,只要字符序列相同(顺序和大小写...案例需求 : 定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法, 并在控制台输出结果。...例如,数组为int[] arr = {1,2,3}; ,执行方法后的输出结果为:[1, 2, 3] 实现步骤 : 定义一个 int 类型的数组,用静态初始化完成数组元素的初始化 定义一个方法,用于把 int.../* 思路: 1:定义一个 int 类型的数组,用静态初始化完成数组元素的初始化 2:定义一个方法,用于把 int 数组中的数据按照指定格式拼接成一个字符串返回。...//定义一个 int 类型的数组,用静态初始化完成数组元素的初始化 int[] arr = {1, 2, 3}; //调用方法,用一个变量接收结果 String
但是有时候也存在不同对象哈希码值相同的特殊情况,我们称之为”哈希碰撞”现象 equals() 本方法用于指示其他某个对象是否与当前对象”相等” 3.3 练习: Object类练习 创建包: cn.tedu.api...方式二: String str = “abc”; 如果是第一次使用字符串,java会在字符串堆中常量池创建一个对象。 再次使用相同的内容时,会直接访问堆中常量池中存在的对象。...,地址值不同 System.out.println(s2 == s22);//true,都在堆中常量池,并且指向同一个,所以地址值相同 System.out.println...String[],所以需要使用Arrays.toString()打印 //以指定字符作为分割符,分割当前的字符串 //我们只是直接打印了split()的结果,没有使用变量保存...//4.打印拼接的效果 //System.out.println(sb); System.out.println(sb2); //5.3打印拼接总共消耗的时间
另外,我们还需要了解一个特性,当将一个字符串与一个非字符串的值进行拼接时,后者被自动转换成字符串(「任何一个 Java 对象都可以转换成字符串」)。...例如: int a = 12; System.out.println("a = " + a); 结合上面这两特性,我们来看个小问题,「空串和 null 拼接的结果是啥」?...str1 和 str2 是两个不同的对象,地址不同,因此 == 比较的结果也就为 false。 ?...因此 s3 和 s4 引用的是同一个字符串,也就是说它们的地址相同,所以 str3 == str4 的结果是 true。 ? ?...初始化操作 StringBuilder 和 StringBuffer 这两个类的 API 是相同的,这里就以 StringBuilder 为例演示其初始化操作。
[0], arr[1], arr[2]); //打印结果:arr[0]: 0, arr[1]: 0, arr[2]: 0 //再初始化数组里面的元素 arr[0] =...printf("cc2: %s \n", cc2); //打印结果:cc2: b \0的作用测试 //字符数组的部分初始化, 设置了字符数组的元素个数,然后部分元素初始化,其他元素为默认值...^_^"; //strcat(s1, s2); //这种写法运行时会挂,因为s1字符串变量装不了来自s2来的全部数据 //正确拼接方式,先计算源字符串还可以拼接字符的长度 size_t...:catLen: 7 strncat(s1, s2, catLen); printf("拼接后新字符串src: %s \n", s1); //打印日志:拼接后新字符串src: hiHello...: s3Len: 9, s3: very good //4、strcmp、strncmp 字符串比较 //取出字符逐个比较,发现不相同则不往下比较,==0表示相同,
估计大家会有疑问了,为什么源代码中字符串拼接的操作,在编译完成后会消失,直接呈现为一个拼接后的完整字符串呢?...而对s2来说,虽然也被声明为final类型,并且在声明时就已经初始化,但使用的不是常量表达式,因此不属于编译期常量,这一类型的常量被称为运行时常量。...另外值得一提的是,编译期常量与运行时常量的另一个不同就是是否需要对类进行初始化,下面通过两个例子进行对比: public class IntTest1 { public static void...+"b"; String s3="a"+"b"; System.out.println(s2=="ab"); System.out.println(s3=="ab"); } 结果打印...: false true 为什么会出现不同的结果?
领取专属 10元无门槛券
手把手带您无忧上云