Java里的每个符号代表啥意思

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java里的每个符号代表啥意思相关的知识,希望对你有一定的参考价值。

如:||代表“或”,&&代表“与”

你好提问者:
算术操作符
一元: + - ++ --
二元: + - * / %
值得注意的是 ++ 和-- 操作符, 如:int a,x=1,y=5; a = ++x;b=y++;
此时a的值为2(先加1,后赋值),b的值为5(先赋值,后加1)。
二元操作符两侧的操作对象数据类型不先自动进行类型转换,再进行操作。
赋值操作符与复合赋值操作符 可将 变量 = 变量 op 表达式 写成 变量 op = 表达式
如:x+=20 与 x=x+20 结果一致,但更简洁。 注意:= 与 = = 的不同。
位操作符和移位操作符 位操作符
&(按位与) |(按位或) ^(按位异或) 移位操作符
E<<n 左移n位,空位补0,相当于E*2
E>>n 右移n位,空位用原最高位的位值补足,相当于E/2 E>>>n 右移n位,空位补0
关系操作符
关系操作符共六个:
>(大于) >=(大于等于) <(小于)<=(小于等于) !=(不等于) = =(相等) 关系操作符的结果为boolean型数据(true或false)。
注:= = 操作符只有在比较双方均完全一致时,其值为true,如比较的是两个对象,即使两个对象的内容相同,结果也为false,
只有这两个对象为同一对象时才为true。
逻辑操作符
逻辑操作符的操作对象和结果均为boolean型,共六个: !(逻辑非) && (逻辑与) ||(逻辑或) ^(逻辑并或) & (逻辑与) | (逻辑或)
按位与„&„也可作为逻辑与使用,但未作优化,而„&&„操作符是经过优化的。对„|„操作符也类似。
其他操作符
条件操作符 E1?E2:E3
表达式E1若成立,执行表达式E2,否则执行E3。 逗号操作符
","可用于分隔语句。 如 int x,y;
for (x=0,y=0;x<10;x++) ...;
操作符的优先级和结合规则 优先级:
一元 〉算术 〉移位 〉关系 〉按位 〉逻辑 〉三元 〉(复合)赋值 〉逗号 结合规则:
除一元、三元和赋值操作符是自右至左结合外,其他均自左至右结合。 语句的分类
Java语句按是否改变运行的状态可分为执行语句(如表达式语句)和非执行语句(如声明语句)。任何语句的末尾都以“;”结束。
执行语句按其组成可分三类: 空语句
只有一个语句结束符“;” ,无任何内容。

如果不明白就去这看一下吧 http://wenku.baidu.com/link?url=5eQ6a-Z08yt9V9NdVe5Ur8Ztanzt4ponv5hNA_R3meGg4R1Z_YdQEwoIPdiTG7pMWaNFvcOP9JQ-RId1jIY1TEy8Us_FwsLyOv-FbTBh1cW
参考技术A 1、算数运算符
    + :加法
    - :减法
    * :乘法
    / :除法
    % :取余运算
  2、关系运算符
    < :只能比较基本类型数据之间的关系,不能比较对象之间的关系。
    > : (同关系运算符“<”)
    <=: (同关系运算符“<”)
    >=: (同关系运算符“<”)
    == :比较两个对象是否相等
    != :比较两个对象是否相等
  3、逻辑运算符 (操作符只能是布尔类型的)
    && 短路与
    || 短路或
    ! 非本回答被提问者采纳
参考技术B = 赋值;
== 等于
参考技术C !代表“非” 参考技术D 百度搜索《Java编程思想》。

大 Ө 符号到底代表啥?

【中文标题】大 Ө 符号到底代表啥?【英文标题】:What exactly does big Ө notation represent?大 Ө 符号到底代表什么? 【发布时间】:2012-05-09 17:49:42 【问题描述】:

我对大 O、大 Omega 和大 Theta 符号之间的区别感到非常困惑。

我知道大 O 是上限,大 Omega 是下限,但是 big Ө (theta) 究竟代表什么?

我读过它的意思是紧密绑定,但这是什么意思?

【问题讨论】:

Difference between lower bound and tight bound?的可能重复 【参考方案1】:

首先让我们了解什么是大 O、大 Theta 和大 Omega。都是sets的函数。

Big O 给出上限asymptotic bound,而大 Omega 给出下限。 Big Theta 两者兼而有之。

所有Ө(f(n)) 也是O(f(n)),但反之则不然。 如果T(n) 位于O(f(n))Omega(f(n)) 中,则称T(n) 位于Ө(f(n)) 中。 在集合术语中,Ө(f(n))O(f(n))Omega(f(n)) 的intersection

例如,合并排序最坏情况是O(n*log(n))Omega(n*log(n)) - 因此也是Ө(n*log(n)),但它也是O(n^2),因为n^2 比它渐近“更大”。但是,它不是Ө(n^2),因为算法不是Omega(n^2)

更深入的数学解释

O(n) 是渐近上界。如果T(n)O(f(n)),则表示从某个n0中,有一个常数C使得T(n) &lt;= C * f(n)。另一方面,大欧米茄说有一个常数C2 使得T(n) &gt;= C2 * f(n)))。

不要混淆!

不要与最坏、最好和平均情况分析相混淆:所有三个(Omega、O、Theta)符号都与算法的最佳、最坏和平均情况分析相关。这些中的每一个都可以应用于每个分析。

我们通常用它来分析算法的复杂性(如上面的归并排序示例)。当我们说“算法 A 是 O(f(n))”时,我们真正的意思是“最差1 案例分析下的算法复杂度是 O(f(n))” - 意思是 - 它缩放“相似”(或正式,不比)函数f(n)

为什么我们关心算法的渐近界?

嗯,有很多原因,但我相信其中最重要的是:

    确定精确复杂度函数要困难得多,因此我们“妥协”在理论上足够丰富的大 O/大 Theta 符号。 确切的操作数也是平台相关的。例如,如果我们有一个包含 16 个数字的向量(列表)。需要多少操作?答案是:视情况而定。一些 CPU 允许向量加法,而另一些则不允许,因此答案在不同的实现和不同的机器之间有所不同,这是一个不受欢迎的属性。然而,大 O 表示法在机器和实现之间更加稳定。

要演示此问题,请查看以下图表:

很明显f(n) = 2*nf(n) = n 更“差”。但差异并不像其他功能那么大。我们可以看到f(n)=logn 很快变得比其他函数低很多,f(n) = n^2 很快变得比其他函数高很多。 所以 - 由于上述原因,我们“忽略”了常数因子(图表示例中的 2*),而仅采用大 O 表示法。

在上面的示例中,f(n)=n, f(n)=2*n 将同时在 O(n)Omega(n) 中 - 因此也将在 Theta(n) 中。 另一方面 - f(n)=logn 将在 O(n) 中(它比 f(n)=n“更好”),但不会在 Omega(n) 中 - 因此也不会在 Theta(n) 中。 对称地,f(n)=n^2 将在 Omega(n) 中,但不在 O(n) 中,因此 - 也不是 Theta(n)


1通常,但并非总是如此。当缺少分析类(最差、平均和最佳)时,我们的意思是最坏的情况。

【讨论】:

@krishnaChandra:f(n) = n^2 渐近强于n,因此是 Omega(n)。但是它不是 O(n)(因为对于较大的 n 值,它大于 c*n,对于所有 n)。既然我们说 Theta(n) 是 O(n) 和 Omega(n) 的交集,既然不是 O(n),也就不可能是 Theta(n)。 很高兴看到有人解释大 O 表示法与算法的最佳/最坏情况运行时间无关。当我在谷歌上搜索主题时,出现了很多网站说 O(T(n)) 意味着最坏情况下的运行时间。 @almel 这是 2*n (2n, 两倍 n) 不是 2^n @VishalK 1. 大 O 是 界,因为 n 趋于无穷大。 2. Omega 是 界,因为n 趋于无穷大。 3. Theta 是 上限和下限,因为 n 趋于无穷大。请注意,所有边界仅在“因为 n 趋于无穷大”时才有效,因为边界不适用于 n 的低值(小于 n0)。所有 nn0 的界限都成立,但不低于 n0,因为低阶项占主导地位。 @hey_you 再次阅读答案。 big O,Theta,Omega 用于函数,而不是算法。合并排序是 Omega(n) 最坏的情况。这也是 O(n^2) 最好的情况。这也是 Theta (nlogn) 最坏的情况。基本上,对于每个分析(最差/最佳/平均/...),您都有一个复杂度函数T_best(n), T_worst(n), T_average(n)。它们不必相同(大多数情况下,它们不是相同的)。 O/Omega/Theta 可以独立应用于其中任何一个。【参考方案2】:

这意味着算法在给定函数中既是大O又是大欧米茄。

例如,如果它是Ө(n),那么有一些常量k,这样你的函数(运行时,等等),对于足够大的n,大于n*k,以及其他一些常量K 使得你的函数小于n*K 足够大的n

换句话说,对于足够大的n,它被夹在两个线性函数之间:

对于足够大的k &lt; Knn*k &lt; f(n) &lt; n*K

【讨论】:

没有,那些变量有点混乱,它们是不相关的。 @committedandroider 不,它们是小写和大写,因此不同,他使用的是典型的数学风格,其中两个“相似”(但在这里没有任何关系)变量使用大小写。【参考方案3】:

Theta(n): 一个函数f(n)属于Theta(g(n)),如果存在正常数c1c2使得f(n)可以夹在c1(g(n))之间和c2(g(n))。即它给出了上限和下限。

Theta(g(n)) = f(n) : 存在正常数 c1,c2 和 n1 使得 0=n1

当我们说f(n)=c2(g(n))f(n)=c1(g(n)) 时,它表示渐近紧界。

O(n):它只给出上限(可能很紧也可能不紧)

O(g(n)) = f(n) : 存在正常数 c 和 n1 使得 0=n1

ex:边界2*(n^2) = O(n^2) 是渐近紧的,而边界2*n = O(n^2) 不是渐近紧的。

o(n):它只给出上限(从不严格)

O(n) 和 o(n) 之间的显着区别是 f(n) 小于 cg(n) 对于所有 n>=n1 但不等于 O(n)。

ex2*n = o(n^2),但2*(n^2) != o(n^2)

【讨论】:

你没有提到大欧米茄,指的是下限。否则,非常好的第一个答案,欢迎! 我喜欢他定义 Theta(n) 的方式。点赞! 将 theta 视为函数的“平均”时间是否正确?我一直听到人们将其称为平均值,但我不确定它仅受上下边界约束的事实是否真的意味着它是平均值。【参考方案4】:

我希望这是您可能希望在经典的CLRS(第 66 页)中找到的内容:

【讨论】:

【参考方案5】:

大 Theta 符号:

没有什么可以搞砸的哥们!!

如果我们有一个正值函数 f(n) 并且 g(n) 接受一个正值参数 n 那么 ϴ(g(n)) 定义为 f(n): 存在常数 c1,c2 和 n1所有 n>=n1

其中 c1 g(n)

举个例子:

让 f(n)=

g(n)=

c1=5 和 c2=8 和 n1=1

在所有符号中,ϴ 符号给出了关于函数增长率的最佳直觉,因为它为我们提供了一个与 big-oh 和 big-omega 不同的紧密界限 它分别给出了上限和下限。

ϴ 告诉我们 g(n) 与 f(n) 尽可能接近,g(n) 的增长率尽可能接近 f(n) 的增长率。​​p>

【讨论】:

【参考方案6】:

首先是理论

    大 O = 上限 O(n)

    Theta = 阶函数 - theta(n)

    Omega = Q-Notation(下限)Q(n)

为什么人们如此困惑?

在许多博客和书籍中,这种声明的强调方式是这样的

“这是大 O(n^3)”等。

人们经常像天气一样混淆

O(n) == theta(n) == Q(n)

但值得牢记的是它们只是名称为 O、Theta 和 Omega 的数学函数

所以它们有相同的多项式通式,

让,

f(n) = 2n4 + 100n2 + 10n + 50 那么,

g(n) = n4,所以g(n)是以函数为输入,返回最大幂的变量,

以下所有解释的 f(n) 和 g(n) 相同

大 O(n) - 提供上限

大 O(n4) = 3n4,因为 3n4 > 2n4

3n4 是 Big O(n4) 的值 就像 f(x) = 3x

n4在这里扮演x的角色,所以,

用 x'so 代替 n4,Big O(x') = 2x',现在我们都很高兴一般概念是

所以 0 ≤ f(n) ≤ O(x')

O(x') = cg(n) = 3n4

投入价值,

0 ≤ 2n4 + 100n2 + 10n + 50 ≤ 3n4

3n4 是我们的上限

Big Omega(n) - 提供下限

Theta(n4) = cg(n) = 2n4 因为 2n4 ≤ 我们的例子 f(n)

2n4 是 Theta(n4) 的值

所以,0≤cg(n)≤f(n)

0 ≤ 2n4 ≤ 2n4 + 100n2 + 10n + 50

2n4 是我们的下限

Theta(n) - 提供紧界

这是为了找出天气下界与上界相似,

案例 1)。上界与下界相似

if Upper Bound is Similar to Lower Bound, The Average Case is Similar

Example, 2n4 ≤ f(x) ≤ 2n4,
Then Theta(n) = 2n4

案例 2)。如果上界与下界不相似

In this case, Theta(n) is not fixed but Theta(n) is the set of functions with the same order of growth as g(n).

Example 2n4 ≤ f(x) ≤ 3n4, This is Our Default Case,
Then, Theta(n) = c'n4, is a set of functions with 2 ≤ c' ≤ 3

希望这能解释清楚!

【讨论】:

以上是关于Java里的每个符号代表啥意思的主要内容,如果未能解决你的问题,请参考以下文章

java中的“~”这个符号是表示啥意思啊?

这几个泛型符号都是啥意思?

c语言中的特殊符号啥意思代表啥

英语中都有哪些标点符号,各代表啥意思

source insight中各种颜色符合代表啥意思?

在java中@符号是啥意思?