C++,Java,python的不同之总结

1.引号

Java

单引号引的数据 是char类型的,双引号引的数据 是String类型的;单引号只能引一个字符,而双引号可以引0个及其以上。char只是一个基本类型,而String 可以是一个类,可以直接引用。

C++

双引号表示字符串,单引号表示字符。
字符串里,哪怕你只放了一个字母,事实上,系统会自动给它加一个\0。表示结束。也就是说,字符串比你看到的多占一个位置。
比如‘a’表示字母a,“a“表示"a,\0"

Python

  1. 无引号
    让计算机读懂括号里面的内容,打印最终的结果。比如:
输入:print(2*3)
结果:6
  1. 带引号
    让计算机无需理解,直接打印里面的内容。

  2. 带双引号
    让计算机无需理解,直接打印里面的内容。可以输出内容中的单引号。比如:”I‘m hungrg。”

输入:print(''I'm hungrg.'')
结果:I'm hungrg.
  1. 带三引号
    实现换行(根据有没有标点符号来自动换行),也可以是自己在输入时进行换行,输出也就会出现换行的结果,即输入即所得。

2.输出

Java

System.out.println();

C++

cout<< ;

Python

print()//无需分号Wello

三者输出HelloWorld

//java
public class HelloWorld{
    
    
	public static void main(String[] args){
    
    
		System.out.println("HelloWorld");
	}
}

//C++
#include <iostream>
using namespace std;
int main(){
    
    
	cout << "HelloWorld" ;
	return 0;
}

//python
print('HelloWorld')

3.逻辑运算

Java

&|^&&||

&:与,两边都为true,才为true
|:或,两边至少有1边为true,才为true
^:异或,两边中boolean不相同即一边为true一边为false时,才 为true
:非,变true为false,变false为true
&&:短路与,作用和&相同,但是具有短路效果
||:短路非,作用和||相同,但是具有短路效果

下面来解释一下&&和&的区别:
大家不妨先思考一下下面这个代码的结果,之后我会给出正确结果,检测一下自己思考的是否正确。
在这里插入图片描述
上结果:
在这里插入图片描述
为什么结果会不一样呢?就是因为&&具有短路效应。当它检验到前一半以及错误了,就不会再检测后一半,后一半就不会再进行操作了。
同理:||,如果左边为假,右边执行,如果左边为真,右边不执行。

C++

&&||!&|
和java对应的相同,见下图。
在这里插入图片描述
ps:学了一年的C++,今天才知道,原来C++的逻辑运算符也是含有&的,不过感觉用的应该不算多,一般都会采用&&。

python

andornot

  1. 在 Python 中,and 和 or 不一定会计算右边表达式的值,有时候只计算左边表达式的值就能得到最终结果。
  2. 另外,and 和 or 运算符会将其中一个表达式的值作为最终结果,而不是将 True 或者 False 作为最终结果。

以上两点极其重要,了解这两点不会让你在使用逻辑运算的过程中产生疑惑。

对于 and 运算符,两边的值都为真时最终结果才为真,但是只要其中有一个值为假,那么最终结果就是假,所以 Python 按照下面的规则执行 and 运算:
如果左边表达式的值为假,那么就不用计算右边表达式的值了,因为不管右边表达式的值是什么,都不会影响最终结果,最终结果都是假,此时 and 会把左边表达式的值作为最终结果。
如果左边表达式的值为真,那么最终值是不能确定的,and 会继续计算右边表达式的值,并将右边表达式的值作为最终结果。

对于 or 运算符,情况是类似的,两边的值都为假时最终结果才为假,只要其中有一个值为真,那么最终结果就是真,所以 Python 按照下面的规则执行 or 运算:
如果左边表达式的值为真,那么就不用计算右边表达式的值了,因为不管右边表达式的值是什么,都不会影响最终结果,最终结果都是真,此时 or 会把左边表达式的值作为最终结果。
如果左边表达式的值为假,那么最终值是不能确定的,or 会继续计算右边表达式的值,并将右边表达式的值作为最终结果。
在这里插入图片描述

4.string数组相关

C++

#include <iostream>
using namespace std;

int main()
{
    
    
	string s = "abc";
	cout << "请输入一个字符串x:";
	string x;
	cin >> x;
	if (s==x)
		cout << "两个字符串相等" << endl;
	else
		cout << "两个字符串不相等" << endl;
	cout << "单独输出各个字符如下:" << endl;
	for (int i=0;i<s.length();i++)
	{
    
    
		if (i!=s.length()-1)
			cout <<"[" << s[i] << "],";
		else
			cout <<"[" << s[i] << "]" << endl;
	}
	return 0;
}

在这里插入图片描述

Java:

package com.it;

import java.util.Scanner;

public class Str {
    
    
    public static void main(String[] args) {
    
    
        String s = "abc";
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入一个字符串x:");
        String x = sc.nextLine();
        if (s.equals(x))//s.equals(x)就是返回s和x字符串比较的结果
            System.out.println("两个字符串相等");
        else
            System.out.println("两个字符串不相等");
        System.out.println("单独输出各个字符如下:");
        for (int i = 0; i < s.length(); i++) {
    
    //字符串的长度是s.length(),但是如果返回数组的长度就是arr.length
            if (i != s.length() - 1) {
    
    
                System.out.print("[" + s.charAt(i) + "],");//s.charAt(i)相当于C++中的s[i];
            } else {
    
    
                System.out.println("[" + s.charAt(i) + "]");
            }
        }
    }
}

在这里插入图片描述

5.字符串的反转

C++

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
    
    
	string s;
	s="uidyfhusgs";
	cout << s << endl;
	cout << "---------" << endl;
	reverse(s.begin(),s.end());//需要algorithm头文件
	cout << s << endl;
	return 0;
}

在这里插入图片描述

Java

package com;

public class Reverse {
    
    
    public static void main(String[] args) {
    
    
        StringBuilder t = new StringBuilder("uidyfhusgs");
        System.out.println("原数据为:" + t);
        System.out.println("反转后的数据为:");
        //第一种String 转 StringBuild 通过 reverse() 再转 String
        String s = new String("uidyfhusgs");
        StringBuilder ss = new StringBuilder(s);//String转化成StringBuild类型
        ss.reverse();
        s = ss.toString();//StringBuild转化为String类型
        System.out.println(s);
        //第二种直接用StringBuild类型进行;
        StringBuilder st = new StringBuilder();
        st.append("uidyfhusgs");
        st.reverse();
        System.out.println(st);
    }
}

在这里插入图片描述

6.生成随机数

C++

#include <iostream>
#include <ctime>
using namespace std;

int main()
{
    
    
	srand(time(0));
	int x[10];
	for (int i=0;i<10;i++)
		x[i]=rand()%100;
	for (int i=0;i<10;i++)
		cout << x[i] << endl;
	return 0;
}

在这里插入图片描述

Java

import java.util.Random;

public class RandomTest{
    
    
	public static void main(String[] args) {
    
    
		Random r = new Random();
		int[] x = new int[10];
		for (int i=0;i<10;i++)
			x[i]=r.nextInt(100);
		for (int i=0;i<10;i++)
			System.out.println(x[i]);
	}
}

在这里插入图片描述

7.switch语句

C++

switch 语句中的 expression 必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型。
在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。
当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。

Java

switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。

switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。

case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。

当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。

当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。

不难看出,使用python输出最简单,这也是现在为什么python为什么这么流行的一个原因之一。
后续先对java和c++的区别进行加载,python之后再写,写这些也是方便自己查阅吧。
目前先写这么多,尽可能做到每天更新一些,如果对您有帮助的话,不妨点赞关注呗!

猜你喜欢

转载自blog.csdn.net/Freedom_cao/article/details/107280698