java笔记

    //1.scanner
    /*    Scanner scanner=new Scanner(System.in);//从键盘输入   import java.util.Scanner

        scanner.nextLine();//读入一个字符串,以换行符结束

      scanner.next(); //读入一个字符串,以空格结束

       scanner.nextInt();//读入一个字符串,以空格结束

        scanner.hasNextInt();//判断下一个输入是否为整数;若为输出true,否则false,常搭配while使用

  while (scanner.hasNextInt()){

            System.out.println(scanner.nextInt());
            //如果想要强制退出循环,Ctrl+D
        }*/


  // 2.int类型的最大值最小值
        System.out.println(  Integer.MAX_VALUE);//int最大值 2147483647
        System.out.println(  Integer.MIN_VALUE);//int最小值 -2147483648


   //3.数组排序
   int []a=new int[]{3,2,1};
         Arrays.sort(a);   //数组排序  import java.util.Arrays
        System.out.println( Arrays.toString(a));//打印数组  import java.util.Arrays
        //数组扩容
         int []arr=Arrays.copyOf(a,a.length+6);   // a:要拷贝的原数组  a.length+6新数组的长度  返回值为新数组

   //4.字符串
   String s="abc",ss="abc";

        System.out.println( s.compareTo(ss));    //字符串比较 -1 代表 <   0 代表 =  1 代表 >  、

        System.out.println( s.equals(ss));     //判断值是否相等  = --true  != --false


        int i=0;//0<=i<s.length()
        s.charAt(i);    //获取字符串中的指定下标字符,返回值为char类型

       s.toLowerCase();//转为小写

        String[]t=s.split(" ");//以“ ”作为分隔符将s分为多个字符串

         s=new String(new char[]{'1','8','3'});//把字符数组转为字符串
        System.out.println(s);
        char c[]=s.toCharArray();//将s转为字符数组
        System.out.println(Arrays.toString(c));

        System.out.println(Integer.parseInt("123"));//如果有非数字则抛出错误

        System.out.println(s.contains("83"));//判断“83”是否在s中存在

        s.substring(0,1);//截取[0,1)的字符串
        s.substring(0);//截取从0开始到结束的字符串
     //   s.substring(i,j);   //0<=i<s.length();  0<=j<=s.length



        //Math常用方法
        int math1=0,math2=0;
  Math.min(math1,math2);   //不需要导包
Math.max(math1,math2);
Math.pow(1.0,2.0);   //pow(a,b)-->a^b
  //双指针

    //用法一:
    /*
    把a[A,B,B,A,A,A,B,A] 变成 a[A,A,A,A,A,B,B,B]的形式
    设置两个指针,一个从数组的左部开始找A类数,一个从数组的右部开始找B类数
    当左部为A类,指针继续向后移动,指针不动,看右部,右部为B类,指针向前移动,否则
    交换左右指针的值,左指针++,右指针--;
    当左指针>=右指针则排序完毕;



     */

    //用法二
    /*
    把nums[0,1,2,2,1,0,0,1,2] 变成nums[0,0,0,1,1,1,2,2,2]的形式
    设置两个指针
    l=0,  r=nums.length-1
    for (int i = 0; i <= r; i++) {
    // 从头到尾一边扫描
//如果发现当前元素==0;则和nums[l]交换,l++,i++;表示已经把0存在了头部,接下来nums[l]准备接收下一个0;
//如果发现当前元素==2;则和nums[r]交换,r--,i++;表示已经把2存在了尾部,接下来nums[r]准备接收下一个2;
//当i>r时说明遍历结束(r+1--nums.length-1全为2)
//当nums[i]==0&&nums[l]==2时,需要把0放到num[l],2放到nums[r]中,即i与nums[i]与nums[l]交换完,i保持不变 i--,后有for循环对其++
实现i不变,再与其nums[r]交换
//当nums[i]==0&&i==l时,此时按上面的方法处理会导致l>i 我们原先的思想类似与左右两边两条蛇,中间是我们的数组,i每次++,值为0被左边的蛇吃掉;
为2被右边吃,值为1不变;但l>i意味这i的指向在蛇的肚子里,即不符合我们的条件,处理方法是当i==l时,i++;及避免出现l>i

            if(nums[i]==0){

                int temp=nums[i];
                nums[i]=nums[l];
                nums[l]=temp;
                if(i==l){

                }
                else
                {i--;}
                l++;
            }
            else if(nums[i]==2){
                int temp=nums[i];
                nums[i]=nums[r];
                nums[r--]=temp;
                i--;
            }
        }


    }

//如果nums中不止有0,1,2则考虑先把左右两端先排好,在处理子问题

//
   */

    //用法三
    /*
    找数组中两数之和等于具体值;
    数组:nums[1,7,3,4,5,5,6,8,4,9], target=8;
    问题:找nums[i],nums[j]使得之和等与target(每个数字只能使用一次)
    方法:1.先将数组排好序 复杂度O(nlog(n));
         2.设置指针l,r分别从头和尾遍历,当l>r时遍历结束
         3.当nums[l]+nums[r]>target  说明值需要减小;即r--;
           当nums[l]+nums[r]<target  说明值需要增大;即l++;
           当nums[l]+nums[r]==target  说明找到了;l++;r--;看是否还有其他满足的值
          时间复杂度为O(n)
          总的时间复杂度为O(nlog(n))+O(n)=O(nlog(n));

    */

    //用法四
    /*
  找单链表的中间值
  设first,slow都等于链表的头节点,
  first每次走两步,slow每次走一步,当first.next==null或这first==null则slow即为中间节点,

  数组的中间节点:nums.length/2




    */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java笔记是由北京大学青鸟教育推出的一款专门针对Java语言的学习工具。它以全面、系统、实践为特点,通过详细的代码示例和清晰的讲解,帮助学习者全面掌握Java编程语言。 Java笔记采用了线上与线下相结合的学习模式。学员可以通过手机、平板电脑、电脑等设备在线学习,还可以在学习过程中随时记录自己的学习笔记。同时,北大青鸟还为学员提供线下实践环境,学员可以在实验室里亲自动手实践所学知识,加深理解和应用。 Java笔记的内容非常全面,包括了Java语言的基本语法、面向对象编程、异常处理、流操作、多线程、数据库操作等众多知识点。除了理论知识,Java笔记还提供了大量的实例代码,可供学员参考和模仿。这样的学习方式既帮助学员理解Java的基本概念,又能让他们运用所学知识解决实际问题。 与此同时,Java笔记还注重学员的互动交流。在学习过程中,学员可以利用笔记功能记录学习心得和疑惑,还可以在论坛上与其他学员进行讨论和交流。这种互动形式既能促进学员之间的学习互助,也能更好地帮助学员理解和应用所学知识。 总之,Java笔记是北大青鸟推出的一款专注于Java语言学习的工具,通过系统的课程设置、丰富的实例代码和互动交流的方式,帮助学员全面掌握Java编程知识,提升编程能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值