首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

名为i的变量是不可接受的吗?

在编程中,变量名是用来存储数据的标识符。通常情况下,变量名可以是任何合法的字符串,只要它遵循了编程语言的命名规则。

在大多数编程语言中,变量名不能以数字开头,因此名为 "i" 的变量是可以接受的。但是,为了避免歧义和提高代码可读性,建议使用有意义的变量名,以便其他人更容易理解代码的含义。

例如,如果变量 "i" 是一个循环计数器,那么可以将其命名为 "counter" 或 "index",这样其他人阅读代码时就可以更容易地理解其作用。

总之,名为 "i" 的变量是可以接受的,但是建议使用有意义的变量名以提高代码的可读性和可维护性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【小家java】final修饰变量真的不可

每篇一句 穷不练酒,富不占赌 1、概述 这可能大家一个共识:如果我们希望这个变量不可变,我们可以用final进行修饰。...但本篇将带你深入了解不变含义,我相信可以让你更深了解final原理,也能记得更牢靠 2、栗子 被final修饰过变量,只是说栈存储地址不能再改变,但是却没有说地址指向内容不能改变。...所以用final修饰,但内容个对象啥,然后改变对象属性值,这个不在本文讨论范围以内。本文想讨论,直接就概念final地址,让它去指向另外一块内存地址。...System.out.println(str2); //efg System.out.println(field.get(this)); //gfe 通过反射拿到 我们通过反射拿到正确...,而直接输出变量值却是不对

82420

Java 中 String 真的不可

我们都知道 Java 中 String 类设计不可,来看下 String 类源码。...其值 value 也就是对字符数组封装,即 char[],其值被定义成 private final ,说明不能通过外界修改,即不可变。 String 真的 "不可变 " ? 来看下面这个例子。...这其实是初学者一个误区,从上面看 String 结构可以得知字符串由字符数组构成,str 只是一个引用而已,第一次引用了 "Python",后面变成了 "Java",而 substring 也是用...String 真的真的真的 "不可变 " ? 上面的例子肯定是不可,下面这个就尴尬了。...通过反射,我们改变了底层字符数组值,实现了字符串不可变” 性,这是一种骚操作,不建议这么使用,违反了 Java 对 String 类不可变设计原则,会造成一些安全问题。 是不是又涨姿势了?

89530
  • Java 中 String 真的不可

    我们都知道 Java 中 String 类设计不可,来看下 String 类源码。 ? 可以看出 String 类 final 类型,String 不能被继承。...其值 value 也就是对字符数组封装,即 char[],其值被定义成 private final ,说明不能通过外界修改,即不可变。 String 真的 "不可变 " ? 来看下面这个例子。...这其实是初学者一个误区,从上面看 String 结构可以得知字符串由字符数组构成,str 只是一个引用而已,第一次引用了 "Python",后面变成了 "Java",而 substring 也是用...Java中String真的不可? 所以说,这里字符串并不是可变,只是变更了字符串引用。...String 真的真的真的 "不可变 " ? 上面的例子肯定是不可,下面这个就尴尬了。 ?

    88220

    字节跳动面试官:i++ 线程安全

    简介 volatile关键字保证了在多线程环境下,被修饰变量在别修改后会马上同步到主存,这样该线程对这个变量修改就是对所有其他线程可见,其他线程能够马上读到这个修改后值....=42对thread2并不可见) 2、使用 volatile 使用volatile以后,做了如下事情 每次修改volatile变量都会同步到主存中 每次读取volatile变量值都强制从主存读取最新值...(强制JVM不可优化volatile变量,如JVM优化后变量读取会使用cpu缓存而不从主存中读取) 线程 A 中写入 volatile 变量之前可见变量, 在线程 B 中读取该 volatile 变量以后...,当然使用volatile同时也会增加性能开销 注意 volatile并不能保证非源自性操作多线程安全问题得到解决,volatile解决多线程间共享变量可见性问题,而例如多线程i++,++i..._1 6: iadd 7: putfield #2; //Field i:I 10: return 可见i++执行了多部操作, 从变量i中读取读取i值 -> 值+1 -> 将+1后值写回i中,这样在多线程时候执行情况就类似如下了

    46820

    i++ 线程安全?一脸蒙逼

    i++ 线程安全?相信很多中高级 Java 面试者都遇到过这个问题,很多对这个不是很清楚肯定是一脸蒙逼。内心肯定还在质疑,i++ 居然还有线程安全问题?...那么咱么就从volatile说到i++线程安全问题 volatile关键字保证了在多线程环境下,被修饰变量在别修改后会马上同步到主存,这样该线程对这个变量修改就是对所有其他线程可见,其他线程能够马上读到这个修改后值...使用volatile以后,做了如下事情 1、每次修改volatile变量都会同步到主存中 2、每次读取volatile变量值都强制从主存读取最新值(强制JVM不可优化volatile变量,如JVM...优化后变量读取会使用cpu缓存而不从主存中读取) 3、线程 A 中写入 volatile 变量之前可见变量, 在线程 B 中读取该 volatile 变量以后, 线程 B 对其他在 A 中可见变量也可见...,当然使用volatile同时也会增加性能开销 注意 volatile并不能保证非源自性操作多线程安全问题得到解决,volatile解决多线程间共享变量可见性问题,而例如多线程i++,++i

    69420

    如何证明Java多线程中成员变量不可

    前面的几篇文章主要介绍了Java内存模型,进程和线程定义,特点和联系,其中在Java多线程里面有一个数据不可问题而我们知道使用volatile可以解决,但是如何证明这个多线程修改共享数据不可呢...JDK8环境下运行,我们看到有一个静态boolean变量true,然后在main方法中我们声明又创建了一个新线程,并使用lambda语法创建了一个循环,接着在线程启动后我们在主线程最后一行里把...boolean变量值给改变了。...如果两个线程数据可见,那么上面的程序会自动终止,如果不可见则会进入一个无限循环中。...我分别在windows系统和mac系统运行上面的程序,结果都是死循环,程序永远不会停止,这也证明了我们上面的结论,然后如果把 keepRunning 变量加上volatile修饰后,程序可以终止,这也正是

    1.7K40

    【118期】面试官:你真的清楚 i = i++和 i = ++i 区别

    来自:blog.csdn.net/qq_44377709/article/details/106643703 写在前面:前些天看完了JVM内存结构,自以为自己懂了,心里想想不就是分线程共享和线程私有嘛..."i="+i); System.out.println("j="+j); System.out.println("k="+k); } } 你能肯定并且准确说出你答案...结果:i在局部变量表中变成了2,操作数栈中 i 值为1,并且将 i 值返回给 j,即此条语句以后,i = 2,j = 1 2.4、第四步 int k = i + ++i * i++ ?...结果:局部变量表中i = 4,k = 11 2.5、结果 ? 3、i = ++i 按理说根据上面的分析过程,再来分析 i = ++i,就很简单了。...我们 i 变量先在局部变量表中进行自增,然后再将 i 进栈,然后再把栈中数据返回给我们变量 i

    1.5K10

    java中局部变量和全局变量哪个优先_java中成员变量全局变量

    大家好,又见面了,我你们朋友全栈君。 Java变量 java中主要有如下几种类型变量: 一、局部变量 只在特定过程或函数中可以访问变量,被称为局部变量。...与局部变量相对应全局变量。 全局变量就是从定义位置起,作用域覆盖整个程序范围变量。 局部变量可以和全局变量重名,但是局部变量会屏蔽全局变量。...在函数内引用这个变量时,会用到同名局部变量,而不会用到全局变量。 一旦退出方法,构造函数或块中变量将被销毁。 访问修饰符不能用于局部变量。...(这是局部变量和实例变量一大区别) 二、全局变量(成员变量) 其中实例变量、类变量、常量都是属于成员变量,成员变量又被称为全局变量 java类成员变量有俩种:一种被static...在程序运行时区别: (1)实例变量属于某个对象属性,必须创建了实例对象,其中实例变量才会被分配空间,才能使用这个实例变量

    1.2K20

    多线程共享变量内存不可见性

    , 这就造成了线程工作内存共享变量不同步 问题: 各个线程工作内存不可见   即 A线程先读取共享变量a, B线程修改了共享变量a后为a`,推送给主内存并改写, 主内存不会推送给A线程,A和B变量会不同步...重量级同步策略,基于对象同步锁   2. volatile不具备互斥性, 一个线程访问共享变量 , 其他线程也可以访问共享变量     synchronized互斥锁, 具备互斥性..., 在被锁代码块上只能有一个线程访问共享变量   3. volatile不能保证变量原子性, 即一组对共享变量操作不具备事务(要么全部完成,要么全部不完成) 如 i++/i--...工作内存中会主动去拉取主内存共享变量并创建其副本 工作内存中副本修改后会推送给主内存改写共享变量 volatile 会使得主内存修改后共享变量推送其他线程 内存不可本质...即不在存在操作不可见,所有线程操作变量位于主内存变量 https://www.cnblogs.com/huangleshu/p/10026222.html

    73420

    格力手机2低调亮相,3300定价你接受

    虽然此前已经有网友猜出了大部分配置,不过此番格力手机2搭载夏普2K屏还是出乎了很多人预料。...有意思,早在之前格力手机2网上曝光不久,联想ZUK首席执行官常程就在微博上吐槽:“我去,董阿姨肿么就这样走光光了联想ZUK Z2。不是有言在先,不是有颜在先,不是有钱在先。...非常简单粗暴,看来这一次格力手机2直接撞脸ZUK Z2 Pro了,不过在售价上格力手机2就要比联想ZUK Z2 Pro更“上档次”了。...从现场董明珠发言来看,格力手机2作为格力迈向高端手机市场第一步,被定位为一款高端旗舰机,其售价3300元,正式上市时间为6月1日。...虽然格力此番一出手就走高端市场让人颇感意外,但有专家评论称格力手机2定位高端一招妙棋,一方面品质化和高端化日渐成为新消费潮流,另一方面定位高端对于格力品牌形象塑造有很大提升作用。

    44020

    JAVA中String真的不可

    String不可?是的!真想变?也行~ 我们都知道,String不可变对象,即一旦创建,那么就不能改变它状态。对此,我们来分析一波。...String内部构造 小心翼翼进入String内部,我们可以看到它是一个final类,那么没人能继承它,很好,很丁克。...然后直接看向它灵魂,一个char数组,也是final,于是我们知道它怎么不可变了。...private static final long serialVersionUID = -6849794470754667710L; // 略... } 创建对象 直接用常量给String变量赋值...3、虽然值都改变了,但作为对象,4个变量关系依然没有改变(new两个String和其他两个依然不等) 4、这样做很危险 5、这样做很无聊----最佳阅读体验请点击文末 阅读原文

    51430

    你知道Python中4种变量作用域哪些

    B(Built-in) 内建作用域 变量/函数 查找顺序: L –> E –> G –>B 意思,在局部找不到,便去局部外局部作用域找(例如 闭包),再找不到就去全局作业域里找,再找不到就去内建作业域中找...在一个外函数中定义了一个内函数,内函数里运用了外函数临时变量,并且外函数返回值内函数引用。这样就构成了一个闭包。其实装饰函数,很多都是闭包。...但是闭包一种特殊情况,如果外函数在结束时候发现有自己临时变量将来会在内部函数中用到,就把这个临时变量绑定给了内部函数,然后自己再结束。 你可以看下面这段代码,就构成了闭包。...globals() :以dict方式存储所有全局变量 locals():以dict方式存储所有局部变量 globals() def foo(): print("I am a func")...def bar(): foo="I am a string" foo_dup = globals().get("foo") foo_dup() bar() # 输出 # I am

    2K10

    一道非常棘手 Java 面试题:i++ 线程安全

    先来看下面的示例来验证下 i++ 到底是不是线程安全。 1000个线程,每个线程对共享变量 count 进行 1000 次 ++ 操作。...先来看 JMM 模型中对共享变量读写原理吧。 ?...每个线程都有自己工作内存,每个线程需要对共享变量操作时必须先把共享变量从主内存 load 到自己工作内存,等完成对共享变量操作时再 save 到主内存。...这也是经典内存不可见问题,那么把 count 加上 volatile 让内存可见是否能解决这个问题呢? 答案:不能。因为 volatile 只能保证可见性,不能保证原子性。...1、对 i++ 操作方法加同步锁,同时只能有一个线程执行 i++ 操作; 2、使用支持原子性操作类,如 java.util.concurrent.atomic.AtomicInteger,它使用

    59120

    类A公共,应在名为A.java文件中声明错误

    “类A公共,应在名为A.java文件中声明”这句话需要分两步来理解: 1、如果类A被声明为公共(public),那么必须将类A保存在名为A.java文件中; 2、反之,在一个文件中最多包含一个顶级公共类...比如文件A.java中,允许定义一个或多个类,但最多允许一个顶级公共类,此类名为A。此处强调顶级意思,允许非顶级公共类存在,如内部公共类等。...第二种 这是你命名错误 把文件名改为 A.java 因为你里面的类 public class A{} 要不你把你这个公共(public)去掉 要不就要和类名保持一致 第三种 一个文件中最多只能有一个类...public,这样可以暴露类定义, 方便其他类来访问!...还要注意,如果你只建了一个java文件,public只能声明在public static void main前, 要不即使你自己定义public 类名与你声明java文件名字一致,也只能枉然。

    2.2K50

    String为什么不可

    String为什么不可 我们通过查看String源码可以发现 String内部char数组通过 private final修饰,表示不可访问 而且String类也通过final修饰表示不可继承...这样做目的 保证了String类线程安全,如果String可以改变,我们通过写一个类继承String 可以篡改数据 保证了hash属性值不会频繁变更,保证了唯一性,这也是HashMap采用String...作为key原因 实现了字符串常量池,在java中创建字符串对象有两种方式 通过字符串常量创建,这种会在字符串中通过equls方法去判断当前字符串是否存在 存在直接返回,不存在在常量池创建对象 通过new...创建 这样会保证堆和字符串常量中都有该对象,没有就创建该对象,最后返回堆中对象引用地址值 先判断字符串常量池中有没有创建该对象,如果存在就回去堆内存中判断是否存在该对象,如果不存在创建对象,然后返回

    54830

    ​2021-03-06:go中,公共变量协程安全?赋值操作原子?为什么?

    2021-03-06:go中,公共变量协程安全?赋值操作原子?为什么? 福哥答案2021-03-06: 这是面试中被问到。实力有限,真正答案还不知道。...我想法a=1原子操作,a=b不是原子操作。实际开发中,不大可能a=1这种情况,可以说是协程不安全。...所以公共变量非协程安全,赋值操作是否原子跟变量类型及机器架构有关(指令集)。....github.io 16:28:09 今天每日一题我过最快一次 题078_ Tnze 10:27:04 公共变量不是协程安全,赋值操作不是原子 Tnze 10:27:45 这是由于线代多核...cpu中变量可能会储存在不同核心各自cache上 Tnze 10:29:05 需要原子操作一定要用sync包 题029_ 【新手】SQL双活负载均衡集群 7:48:53 2倍就是一个估计而已,2.5倍

    1.3K10

    什么样离职原因可以被接受

    企业早就准备好了你跳槽,甚至用各种福利和前程来诱惑你离开上家,引诱你跳槽过来,它又怎会计较你离开啥原因呢? 既然次要矛盾,则我们应对之策当然外交语言。...某些HR会强调,问你这个问题想看看你职业倾向性、前家矛盾跟我们家体系是不是也不相容,这是个官话、套话,HR想强调自己在职能分工在企业中地位。给对方一个面子,每问必答即可。...所以,你不用担心对方接受接受离职理由,统一用外交语言答复即可。这个记录,主要是HR用来做公司人事情况备案。...再者,从企业角度讲,你创业失败,这本身就是能力问题,一个市场上失败者,我们有必要接受不?...无论自发、他发还是不可抗力导致你突然失业了,都尽量不要提及自己被裁员遭遇。

    84520

    String 不可变真的是因为 final

    不可变真的是因为 final ?...我:.....是的吧 面试官:OK,你这边还有什么问题? 我:卒...... 什么不可变?...这就意味着,一旦我们将一个对象分配给一个变量,就无法再通过任何方式更改对象状态了。...那既然我们说 String 不可,那显然仅仅靠 final 远远不够: 1)首先,char 数组 private ,并且 String 类没有对外提供修改这个数组方法,所以它初始化之后外界没有有效手段去改变它...String 真的不可? 想要改变 String 无非就是改变 char 数组 value 内容,而 value 私有属性,那么在 Java 中有没有某种手段可以访问类私有属性呢?

    57930

    这一次,你还会接受苹果道歉

    北京时间12月29日凌晨,苹果公司发表声明致歉,承认为了平衡手机性能与电池寿命之间关系而降低旧款iPhone处理器速度,表示不会故意缩短任何产品寿命。...苹果公司立马重新审核其软件开发流程随后发布了一个安全补丁来解决此问题,如果用户安装最新macOS系统,这个修复补丁会自动安装。...iPhone 62014年苹果推出手机,在设计上可以说与前代有了颠覆性变化。不过在发布之后,iPhone 6就陷到了“弯曲门”当中。...为了改善iPhone会弯曲问题,苹果选用了硬度更高7000铝替换了之前6000铝。不过一波未平一波又起,这又带来了一个新问题。...在手机领域,iPhone一直革新代名词,也一直各家手机厂商学习方向,不过几乎每一款产品都会在不同方面出现问题。希望未来苹果手机会更注重细节和用户体验,而不要再无休止地“致歉”了。

    78150
    领券