C转JAVA语法极简教程

一、简单的创建一个JAVA程序

1.public class 名字(名字与文件名一致)
2.public class 一个文件只能有一个
3.有几个类就有几个字节码文件(即.class后缀的文件)

public class MyClass {
    public static void main(String[] args) {
        System.out.printf("Hello, World!");
    }
}

4.一个类只能有一个main方法

二、输入输出

1.输入

【1】输入一个变量

导入包:

import java.util,Scanner;

可以理解为申请一块存储的地方来存储变量:

Scanner scan = new Scanner(System.in);

(1)读入一个int的整数:变量名.nextInt();

int n = scan.nextInt();

(2)读入字符串:

变量名.next();(遇到空格结束读取)

变量名.nextLine();(读取一行,遇到空格不会结束)

String s = scan.next(); 或 String s = scan.nextLine();

(3)读入float的浮点型:变量名.nextFloat();

float a = scan.nextFloat();

注:回车也会被字符串读取识别

生成随机数

【2】循环多个输入

Scanner scanner = new Scanner(System,in);

while(Scanner.hasNextInt()){

int n = scanner.nextInt();

//可写其他语句

}

在IDEA上,使用Ctrl+D即可结束输入

2.输出

System.out.printf(同C,即带\n可换行);

System.out.println(data/“word”);//带换行

System.out.print(data/"word");//不带换行

注释:
单行注释:
//注释内容

多行注释:/*注释内容*/

文档注释:/**注释内容*/

三、标识符

1.基本规则

标识符可以由字母、数字、美元符号($)以及下划线(_)组成。数字不能作为标识符的开头。

2.命名规范

“大驼峰”:每个单词的首字母大写,其余字母小写,包括第一个单词。

例如:FirstProject

“小驼峰”:第一个单词首字母小写,其余每个单词的首字母大写,其余字母小写。

例如:firstProject

 四、关键字

1.基本数据类型(8个)

数据类型关键字内存占用
字节型byte  1字节
短整型

short

2字节
整型int4字节
长整型long8字节
单精度浮点数float4字节
双精度浮点数double8字节
字符型char

JAVA中的char为2字节

(即16比特位,1Byte=8bits)

布尔型boolean没有明确规定

注:

不管32位和64位,字节数一样

在 Java当中 没有所谓的无符号数字,没有全局变量。

(全局变量是在程序的最外层定义的变量,其作用域覆盖整个程序,任何函数或代码块都能对它进行访问与修改。)

超出内存范围会报错

   五、基本数据类型

1.初始化

JAVA中的变量必须初始化(或默认初始化为某值)。

        int a =10;
        long b = 10;
        long c = 10L;//建议加大写的L,表示它是long类型的。
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);

结果:

10

10

10

2.浮点型

double d =5.19;

float f =(float)5.19;//方式一

float p=5.19f;//方式二

float c = 5.19//error(java: 不兼容的类型: 从double转换到float可能会有损失)

double类型精度丢失(与C一致)浮点数是近似值而不是精确值

3.字符型

JAVAC
字符型没有负数,没有符号位。它是一个无符号的 16 位整数,范围从 0 到 65535

char 类型是否有符号是由编译器决定的:

有些编译器将 char 视为有符号(范围:-128 到 127)
有些编译器将 char 视为无符号(范围:0 到 255)
 

Unicode字符集(不仅可以表示中文,可以表示世界上几乎所有的字符)ASCII字符集(如果需要在 C 语言中处理 Unicode,通常需要使用 wchar_t 类型和相关的宽字符函数,或者直接操作 UTF-8 编码的字符串。)

4.布尔类型

仅有ture和false。(与C语言不同,没有非0为真,0为假)

拓展

各个数据类型最大值如下,最小值同理,MIN_VALUE

byte maxByte = Byte.MAX_VALUE; // 127

short maxShort = Short.MAX_VALUE; // 32767

long maxLong = Long.MAX_VALUE; // 9223372036854775807

float maxFloat = Float.MAX_VALUE; // 3.4028235E38

double maxDouble = Double.MAX_VALUE; // 1.7976931348623157E308

五、数据转换

基本与C一致:不相关的类型不能强制转换

1.强制类型转换(显示)

int a = 20;

long b = 10L;

a = b;//不能进行直接赋值(范围大的类型给小类型)

b = a;//通过

进行强制类型转换:编译通过!

public class FirstProject {
    public static void main(String[] args){
        int a = 20;
        long b = 10L;
        a = (int)b;

    }
}

2.自动类型转换(隐式)

public class FirstProject {
    public static void main(String[] args){
        int a = 20;
        long b = 10L;
        b = a;//a被默认转换为long(小给大)
        System.out.println(520);//默认int类型
        System.out.println(5.2);//默认为double类型
    }
}

六、类型提升

1.整型

运算时,a自动提升为long类型。

class SecondProject {
    public static void main(String[] args) {
        int a = 2025;
        long b = 520L;
        int c = (int) (a + b);//方法一
        long d = a + b;//方法二
    }
}

2.byte与byte

byte和short低于4字节,会被默认提升为int进行计算。

byte c = (byte) (a + b);// 可以通过,但不建议,可能会产生溢出

    byte a =25;
    byte b =5;
    byte c = (byte) (a + b);// 可以通过,但不建议
    int d = a + b;

七、字符串类型

1.String

C中没有字符串类型,C中的字符串\0结尾。

JAVA中有字符串类型,不以\0结尾。

String s = "love";

2.拼接+

(1)一遇到字符串,+变成拼接,还未遇到就先计算数值。

public class FirstProject {
    public static void main(String[] args){
        int a = 5;
        int b = 20;
        System.out.println("a:"+a +" b:"+b);
        System.out.println("ab: "+a+b);
        System.out.println(a+b+"love");
    }
}

Result:

(2)字符串拼接(同C++)

public class FirstProject {
    public static void main(String[] args){
        String s1 = "love ";
        String s2 ="you";
        System.out.println(s1+s2);
    }
}

Result:

3.将数值换为字符串类型

选取对应的数据类型:

将数值换为字符串类型:

public class FirstProject {
    public static void main(String[] args){
        //方法一
        int a = 520;
        String s1 = a+"";
        System.out.println(s1);

        //方法二
        String s2 = String.valueOf(2025);
        System.out.println(s2);
    }
}

八、运算符

1.算术运算符+-*/%

与C基本一致。JAVA可以对小数求余。

2.增量运算符+=   -=  *=  %=

a+=b;会自动进行类型匹配 ,匹配类型为被赋值的变量(此处为a)。其他同理。

​ int a = 12;

double b = 5.22;

a =(int)(a+b);    它等价于 a+=b;自动进行类型匹配  ​

public class FirstProject {
    public static void main(String[] args){
        int a = 12;
        double b = 5.22;
        a+=b;//自动进行类型匹配
        System.out.println(a);
    }
}

结果:17

3.自增/自减运算符++  --

与C基本一致

public class FirstProject {
    public static void main(String[] args){
        int a = 10;
        int c = a++;
        System.out.println(a);
        System.out.println(c);
    }
}

结果

11

10

注意

JAVA:a = a++;结果为10

C:a = a++;结果为11

4.关系运算符

关系运算符==   !=   <   >   >=   <=

关系运算符得到的结果只有true或false

public class FirstProject {
    public static void main(String[] args) {
        int a = 2025;
        int b = 5;
        System.out.println(a>b);
        System.out.println(a>=b);
        System.out.println(a<b);
        System.out.println(a<=b);
        System.out.println(a!=b);
    }
}

结果:

5.逻辑运算符

&&    ||    !

【1】&&

表达式1  &&  表达式2

(1)两个表达式都必须是布尔表达式。        

(2)若第一个表达式为假,则不会执行第二个表达式。(这被称为短路运算)

表达式1   &&   表达式2结果

【2】||

(1)相当于“或”,又一个真,则结果为真。

(2)若第一个表达式为真,则不会执行第二个表达式。(这被称为短路运算)

【3】!

6.位运算符

位运算符不存在短路运算。

【1】按位与&:对应位有0,此位就为0。

【2】按位或|:对应位有1,此位就为1。

【3】按位异或^:只要对应位不一样,此位就是1。

【4】按位取反~

7.移位运算符(了解即可)

【1】左移<<

二进制,向左位移n的位,向右补0。

则相当于对该数字对应的十进制乘2的n次方。

【2】右移>>

二进制,向右位移n的位,向左补符号位(符号位为1补1,为0补0)。

则相当于对该数字对应的十进制除2的n次方。

【3】无符号右移>>>

二进制,向右位移n的位,向左补0。

8.条件运算符

布尔表达式1 ? 表达式2 : 表达式3

JAVA中唯一一个三目运算符(同C)

布尔表达式1为真,则返回表达式2。布尔表达式1为假,则返回表达式3。

九、逻辑控制

1.顺序执行

可按C理解,一行一行执行

2.选择执行

【1】if

JAVA中的if与C不同,它使用布尔表达式,如if(1)为错。(其他与C一致)

if(布尔表达式){

//语句

}else{
//语句

}

【2】switch

与C不同,JAVA除了float,double,long,boolean不能作为参数外,其他都可以。(其他与C有差别,但用法基本一致)

switch(表达式){
        case 常量值1:{
                语句1;

                break;

        }

        case 常量值2:{
                语句2;

                break;

        }

不写break,会产生代码穿透,即继续执行下面的case分支,直到遇到break或switch语句结束。

3.循环执行

基本与C一致,但JAVA会使用布尔表达式。

break与continue与C一致。

break:跳出此次循环,终止循环。

continue:跳出此次循环,进入下次循环。

【1】while

while(布尔表达式){
//语句

}

【2】for

for(表达式1;布尔表达式;表达式3){

循环体;

}

快速打出:

fori +“回车”,快速写出for循环,for(int i = 0;i<  ;i++)

10.fori +“回车”,快速写出for循环,for(int i = 0;i < 10;i++)

【3】do while

do{
语句;

}while(判断条件);

十、方法

1.定义

方法可理解为C语言中的函数

【1】格式

修饰符 返回值  方法名 (形式参数列表){
   方法体

return 返回值;(void无返回值)

}

public static int add(int x,int y){
return x+y;

}

【2】注意事项

(1)修饰符:可使用public static固定搭配

(2)返回值类型:返回值类型与返回实体类型一致,void不用写。(同C)

(3)方法名:采用小驼峰命名

(4)参数列表:

(5)Java中, 方法必须写在类中。

(6)Java中,方法不能嵌套定义。(即不能直接在方法内部定义另一个方法​​)

(7)Java中,​​方法声明(即方法的完整定义)不需要一定放在主函数(main方法)之前​。​

【3】实参和形参的关系

Java中,形参的改变不会影响实参的值,拿不到栈上的局部变量的地址的。

注:Java是没有指针的。

2.方法重载(overload)

【1】方法重载:同一个方法名,参数列表必须要不同(个数,类型,顺序),多个不同的方法,与返回值无关。(与C++类似)

【2】签名:在Java中,方法重载的​​签名​​由​​方法名​​和​​参数列表​​(参数类型、个数、顺序)共同决定,与返回值无关。所以才可以做到一个名字,不同方法。

【3】方法重载(overload)与方法重写(override)不同。

十一、递归

在Java中,如果递归调用​​没有结束条件​​,会导致​​栈内存溢出​​,并抛出java.lang.StackOverflowError错误。

十二、数组

数组定义与C相似。

1.一维数组

【1】定义

例如: int[ ]  array={1,2,3,4};或 int[ ]  array2 = new int[ ]{1,2,3,4,5,6};(二者无差别)

int[ ]  array3 = new int[10]; (默认初始化值为每个元素都是0,Boolean类型默认为false)

错误写法:

(1)  int[ ]  array4 = new int[10] {……};(int[ ]  array3 = new int[10];即等号后面的[ ]里有值,它后面是不能加大括号的)

(2)   int[ ] array5;

            array5 = {1,2,3,4,5};

【2】两种遍历一维数组的方法

int[] array = {1, 2, 3, 4, 5, 6};
for (int i = 0; i < array.length; i++) {
    System.out.print(array[i] + " "); // 通过索引访问元素
}
System.out.println("\n=====");

for (int x : array) {
    System.out.print(x + " "); // 直接获取元素值
}
System.out.println("\n=====");

2.JAVA中的数组方法

包java.util.Arrays;含有多个常用方法

场景​​推荐方法​​示例​
​输出数组内容​Arrays.toString()System.out.println(Arrays.toString(arr))
​快速排序​Arrays.sort()Arrays.sort(arr, Comparator.reverseOrder())
​高效查找(已排序)​Arrays.binarySearch()int idx = Arrays.binarySearch(arr, key)
​复制部分数组​Arrays.copyOfRange()int[] copy = Arrays.copyOfRange(arr, 1, 4)
​初始化默认值​Arrays.fill()Arrays.fill(arr, 0)

3.二维数组

二维数组是特殊的一维数组。

【1】定义

int [ ] [ ] array = {{1,2,3},{4,5,6}};

int [ ] [ ] array = new [ ] [ ] {{1,2,3},{4,5,6}};

int [ ] [ ] array = new [2] [3];

【2】行数列数的表示

        int[][] array={{1,2,3},{3,4,5}};
        System.out.println(array.length);//行数
        System.out.println(array[0].length);//列数

【3】两种二维数组的遍历方法

        int array[][]={{1,2,3},{4,5,6}};
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j <array[i].length  ; j++) {
                System.out.println(array[i][j]+" ");
            }
            System.out.println();
        }
        System.out.println("=======");

        for (int [] tmpArray :array) {
            for(int x:tmpArray){
                System.out.println(x+" ");
            }
            System.out.println();
        }
        System.out.println("=======");
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值