• Java语法1


    1.java的基本数据类型

    1. 1.int
    2. 2.short
    3. 3.long
    4. 4.float
    5. 5.double
    6. 6.char 占两个字节
    7. 7.byte 字节型 占1个字节
    8. 8.boolean 布尔型 truefalse 没有大小
    9. boolean a= true
    10. boolean b=false

    2.引用数据类型:

    1. String
    2. Array

    3.包装类

    1. Integer 对应 int
    2. Character 对应 char
    3. Short 对应 short
    4. Long 对应 long
    5. Float 对应 float
    6. Double 对应 double
    7. Byte 对应 byte
    8. Boolean 对应 boolean

    4   注意像 long  float    这样类型的数据我们在定义变量的时候在值后面最好分别加上L F

    1. long a=2L
    2. float b=3.14F

    5.布尔型变量的应用

    在Java中,我们不再使用非0和0来表示真假而是使用true和false

    1. int a=3;
    2. int b=4;
    3. int c=0;
    4. if(a>b) //此时a>b返回的是false,表达式并不执行
    5. {
    6. c=1;
    7. }
    8. int a=3;
    9. int b=4;
    10. int c=0;
    11. if(true)//括号里如果是true表达式执行,如果是false表达式不执行
    12. {
    13. c=1;
    14. }
    15. public static void main(String[] args) {
    16. int a=0;
    17. if(!a) //可以这样写吗?不可以这样写,括号里必须是表达式的形式c语言里可以这样写
    18. {
    19. System.out.println("hello");
    20. }
    21. }

     6.类型转换

      数据范围小的转换成数据范围大的会自动进行转换

    1. int a=3;
    2. float b=3.14f;
    3. b=a;

    数据范围大的转换成数据范围小的需要我们进行强转

    1. int a=2;
    2. byte b=1;
    3. b=(byte)a;
    4. int a=3;
    5. double b=3.14;
    6. int c= (int)(a+b);//a+b a先转换成double型,又因为 c是int 型,所以需要对a+b整体强转成int型

    7.字符串类型:

    java中使用String类定义字符串类型

    1. public static void main(String[] args) {
    2. String a="wol";
    3. String b="he";
    4. System.out.println(a);
    5. System.out.println(b);
    6. System.out.println(a+b);
    7. }

     int型转成String.

    1. public static void main(String[] args) {
    2. int a=3;
    3. System.out.println("hello"+a);
    4. }

     8.无符号右移  >>>

      不管符号位是啥最左侧补0,没有无符号右移.

    9.按位与&

    二进制数对应位都为1结果才为1,用来判断对应位是不是都是1.

    按位或 |

    二进制数对应位0结果才为0,用来判断对应位是不是都是0;

    按位异或

    二进制数对应位相同为0,相异为1

    a^a=0;

    0^a=a;

    a^a^b=b;

    a^b^a=b;满足交换分配律

    可用来解决单身狗类的问题

    10.输出类

    1. public static void main(String[] args) {
    2. System.out.println("hello");//输出了以后换行
    3. System.out.print("hello");//输出了以后不换行
    4. System.out.printf("%s","hello");
    5. }

    11.方法重载

     在java中如果方法名必须相同,但是参数列表必须不同(顺序、类型、参数个数),返回值类型可同可不同,我们称这几种方法重载了。

    1. public static double add(double a,double b)//与第一种方法参数类型不同
    2. {
    3. return (a+b);
    4. }
    5. public static int add(int a,int b)
    6. {
    7. return a+b;
    8. }
    9. public static int add(int b,int a,int c)//与第一种方法参数多少不同
    10. {
    11. return (a+b+c);
    12. }
    13. public static int add(int a,int b)
    14. {
    15. return a+b;
    16. }
    17. public static double add(double b,int a)//与第一种方法参数顺序不同,但前提是参数不能是一个类型的,例如两种方法里的a 和 b不能
    18. { //同时为 int型
    19. return (a+b);
    20. }
    21. public static double add(int a,double b)
    22. {
    23. return a+b;
    24. }
    1. public static double add(double b,int a)//返回值类型可同可不同,只要方法名相同、参数列表不同就行
    2. {
    3. return (a+b); //返回值类型不同
    4. }
    5. public static int add(int a,double b)
    6. {
    7. return (int)(a+b);
    8. }
    9. public static double add(double b,int a)//返回值类型可同可不同,只要方法名相同、参数列表不同就行
    10. {
    11. return (a+b); //返回值类型相同
    12. }
    13. public static double add(int a,double b)
    14. {
    15. return (a+b);
    16. }

    12.1数组的定义和使用

    1. public static void main(String[] args) {
    2. int[]arr={1,2,,3,4,5,6};//静态初始化
    3. int[]arr3=new int[5]; // 5个元素全部被初始化为0;
    4. int[]arr4;
    5. arr4={1,2,,3,4};不可以这样写
    6. }

    2数组的打印

    1. 数组的三种打印方式
    2. public static void main126(String[] args) {
    3. int[]arr14={1,8,7,3,4};
    4. for (int i = 0; i < arr14.length; i++) {
    5. System.out.print(arr14[i]+" ");
    6. }
    7. }
    8. public static void main124(String[] args) {
    9. int[]arr13={1,7,6,9,2};
    10. String b=Arrays.toString(arr13);
    11. System.out.println(b);
    12. }
    13. public static void main123(String[] args) {
    14. int[]arr12={1,5,6,9,2};
    15. for (int x: arr12) { //可以理解为从数组中拿出x来,从第一个开始拿并打印
    16. System.out.print(x+" ");
    17. }

      3.数组是一种引用类型,其数组名存放的是其存储对象第一个元素的地址。

    1. public static void main(String[] args) {
    2. int[]a={7,8,9,1,2};
    3. }

     

    1. public static void main(String[] args) {
    2. int[]a={7,8,9,1,2};
    3. int[]b={1,2,3,4,5};
    4. a=b;
    5. System.out.println(Arrays.toString(a));
    6. System.out.println(Arrays.toString(b));

    我们一起来看一下打印结果:

    为什么会是这样一种结果呢?我们可以一起来分析一下:

     

    一开始 a和b分别指向{7,8,9,1,2} 和{1,2,3,4,5}这两个数组,后来因为b的值赋给了a,所以a也指向{1,2,3,4,5}.

    数组的传叁:

    1. public static void tiaoz(int[]d)
    2. {
    3. d[0]=0;
    4. }
    5. public static void main(String[] args) {
    6. int[]c={1,2,6,8,9};
    7. tiaoz(c);
    8. System.out.println(Arrays.toString(c));
    9. }

     

      c数组用d数组来接受,使得d指向c原来的对象,d[0]=0也就自然改变了原来第一个元素的值。

    4.常见的操作数组的函数

    1.copyof   拷贝函数,第一个参数为拷贝的源数组,第二个参数为拷贝的个数

    1. public static void main1(String[] args) {
    2. int[]arr={1,2,3,4,5,6};
    3. int[]arr2= Arrays.copyOf(arr,arr.length);
    4. System.out.println(Arrays.toString(arr2));
    5. }

     当拷贝的个数大于源数组的元素个数,用0来填充

    1. public static void main2(String[] args) {
    2. int[]arr={1,2,3,4,5,6};
    3. int[]arr2= Arrays.copyOf(arr,2*arr.length);
    4. System.out.println(Arrays.toString(arr2));
    5. }

     

     当拷贝的个数小于源数组的元素个数

    1. public static void main(String[] args) {
    2. int[]arr={1,2,3,4,5,6};
    3. int[]arr2=Arrays.copyOf(arr,3);
    4. System.out.println(Arrays.toString(arr2));
    5. }

    1. public static void main3(String[] args) {
    2. int[]arr={1,2,3,4,5};
    3. int[]arr1=new int[arr.length];
    4. System.arraycopy(arr,0,arr1,1,3); //有选择的排序从源数组的第一个元素开始,从目标元素的第二个元素开始,拷贝三个元素 这里面的0和3分别是下标
    5. System.out.println(Arrays.toString(arr));
    6. System.out.println(Arrays.toString(arr1));
    7. }

     

     3.范围拷贝    copyofRange(arr,a,b)从源数组[a,b),注意是左闭右开,a和b表示的是下标

    1. public static void main9(String[] args) {
    2. int[]arr5={1,7,4,8,9,10};
    3. int[]arr4=Arrays.copyOfRange(arr5,2,5); //左闭右开[2,5),从下标为2的元素4开始拷贝,下标为5的元素10并不拷贝
    4. System.out.println(Arrays.toString(arr4));
    5. }

     3.sort  数组升序

    1. public static void main101(String[] args) {
    2. int[]arr7={1,7,4,8,9,10};
    3. Arrays.sort(arr7);
    4. System.out.println(Arrays.toString(arr7));
    5. }

     4.fill (arr,0,2,4)     部分修改 ,第一个参数为源数组的参数名,第二个参数为要改的数组的元素起始坐标,第三个参数为要改的数组的终点坐标,第四个元素表示要被改成的数字

    1. public static void main45(String[] args) {
    2. int[]arr10={8,1,5,2,3}; //这个是左闭右闭[0,3]从下边0开始到下标[3]的元素都被改为2
    3. Arrays.fill(arr10,0,3,2);
    4. System.out.println(Arrays.toString(arr10));

     fill(arr,arr.length)全部修改

    1. public static void main(String[] args) {
    2. int[]arr11={8,1,5,2,3};
    3. Arrays.fill(arr11,9);
    4. System.out.println(Arrays.toString(arr11));
    5. }

     6.二维数组

    二维数组是一个特殊的一维数组.

    1.初始化

    1. public static void main12(String[] args) {
    2. int[][]arr=new int[2][3];
    3. int[][]arr2={{1,2,3},{4,5,6}};
    4. int[][]arr3=new int[2][]; //二维数组可以省掉列数。
    5. System.out.println(Arrays.deepToString(arr2));
    6. }

    二维数组省掉列数的好处是可以调整每一行的大小:

    1. public static void main(String[] args) {
    2. int[][]arr5=new int[2][];
    3. arr5[0]=new int[5];
    4. arr5[1]=new int[6];
    5. System.out.println(Arrays.toString(arr5[0]));
    6. System.out.println(Arrays.toString(arr5[1]));
    7. }

     3.数组遍历

    1. 方法1.public static void main89(String[] args) {
    2. int[][]arr4={{7,8,9},{1,4,6}};
    3. for (int i = 0; i < arr4.length; i++) {
    4. for (int j = 0; j < arr4[i].length; j++) {
    5. System.out.print(arr4[i][j]+" ");
    6. }
    7. System.out.println();
    8. }
    9. }
    10. 方法2. public static void main90(String[] args) {
    11. int[][]arr4={{7,8,9},{1,4,6}};
    12. for (int[]arr: arr4) { //先一个一个拿出这两个一维数组
    13. for (int x: arr) { //再一个个拿出每个数组的每个元素
    14. System.out.print(x+" ");
    15. }
    16. System.out.println();
    17. }
    18. }
    19. 方法3.使用deepToString
    20. public static void main12(String[] args) {
    21. int[][]arr=new int[2][3];
    22. int[][]arr2={{1,2,3},{4,5,6}};
    23. int[][]arr3=new int[2][];
    24. System.out.println(Arrays.deepToString(arr2));

  • 相关阅读:
    一比一还原axios源码(五)—— 拦截器
    线程池的运行逻辑与你想象的不一样,它是池族中的异类
    GB28181 编码规则说明
    适用于初学者的 .NET MAUI
    [Linux] TCP协议介绍(3): TCP协议的“四次挥手“过程、状态分析...
    Leangoo领歌免费Scrum管理工具私有部署
    如何批量下载iconfont图标库
    实战:实现一个LRU
    [论文笔记]UNILM
    重新理解微服务之它还那么纯粹吗?
  • 原文地址:https://blog.csdn.net/m0_70386582/article/details/126037728