首页 > 编程语言 >JavaSE学习笔记——01

JavaSE学习笔记——01

时间:2023-04-24 22:22:45浏览次数:47  
标签:01 String int System 笔记 println JavaSE public out

Java笔记基础

仅仅学习,不涉及任何商用

1.注释

  • 单行注释:以"//"开头
  • 多行注释:以"/"开头,以"/"结尾
  • 文档注释:以"/**"开头,"*/"结尾。注释中包含一些说明性的文字及一些JavaDoc标签。
public class Hello {
    public static void main(String[] args) {
        // 单行注释
        // 输出一个Hello World!!!
        System.out.println("Hello World!!!");
        
        /* 多行
        * 注释
        * 
        * */
        
        //javaDoc:文档注释 /** */
    }
}

2.标识符

  • 用来给变量、类、方法以及包进行命名的

  • 四大规则:

    1. 以大小写字母,下划线,$,数字组成;
    2. 不能以数字开头
    3. 大小写敏感;但长度无限制
    4. 不可以是Java关键字
  • 使用规范:表示类名的标识符:每个单词的首字母大写,如Man,GoodMan等

    ​ 表示方法和变量的标识符:第一个单词小写,从第二个单词开始首字符大写,我们称为“驼峰原则”,如eat(); eatFood();

  • 注意:Java不采用ASCII字符集;而是采用Unicode字符集

3.关键字

abstract assert boolean break byte case
catch char class const continue default
do double else extends final finally
float for goto if implements import
instanceof int interface long native new
null package private protected public return
short static strictfp super switch synchronized
this throws throw transient try void
volatile while

注意:另外,true ,false and null都是Java中定义的特殊字符,虽然他们不属于关键字,但也不能被用作类名、方法名和变量名等。goto和const是两个保留字。

4.强类型语言

  • 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用

  • public class Hello {
        public static void main(String[] args) {
            String a="Hello World!!";
            System.out.println(a);
        }
    }
    

5.Java的数据类型分为两种:

5.1基本类型和引用类型

  • public class Hello {
        public static void main(String[] args) {
            // 八大基础数据类型
            // 整数
            int num1 = 10;
            byte num2 = 20;
            short num3 = 30;
            long num4 = 30L;   //Long 类型要在数组后面加个L
    
            // 小数
            float num5 = 50.1F;  //float 类型要在数组后面加个F
            double num6=3.1416926;
    
            // 字符
            char name = 'a';
    
            // 字符串
            String a="Hello World!!";//String 不是关键字,是类
            System.out.println(a);
    
            // 布尔值
            boolean flag1 = true;
            boolean flag2 = false;
        }
    }
    

5.2 扩展

  • 整数扩展:

    ​ 进制:二进制0b 十进制 八进制0 十六进制0x

    public class Hello {
        public static void main(String[] args) {
            int i = 10;
            int i2 = 010;
            int i3 = 0x10;
            System.out.println(i);
            System.out.println(i2);
            System.out.println(i3);
        }
    }
    
  • 浮点数扩展:

    ​ float 类型,尾数可精确到7位有效数字

      	double 类型,默认,常用
    

    ​ 上述两种类型精度有限,离散,含有误差 ,浮点型不精确,最好不使用浮点数进行比较。(同时也不适合精度要求非常高的商业计算,例如银行业务,需要用BigDecimal表示和比较)

  • 字符扩展(强制转换):

    public class Hello {
        public static void main(String[] args) {
            char c = 'a';
            System.out.println(c);
            System.out.println((int) c);
        }
    }
    

    ​ 所有的字符本质还是数字

    ​ 编码 Unicode 表: 2个字节

  • 转义字符

    \t 制表符
    \n  换行
    
  • 对象 从内存分析

  • 布尔值扩展

    // 布尔类型不能用0或非0的整数来替代true和false
    
    if(flag==true){}
    if(flag){}
    // Less is More!   代码要精简已读
    

6.类型转换

  1. 由于java是强类型语言,所以要进行有些运算时,需要用到类型转换。

    低——————————————————————————————>高

    byte,short,char ——> int ——> long ——> float ——> double

  2. public class Hello {
        public static void main(String[] args) {
            int i = 128;
            byte b = (byte)i;   //内存溢出
            System.out.println(i);
            System.out.println(b);
    
        }
    }
    
  3. 强制类型转换 高 ---> 低 (类型)变量名

  4. 自动转换 低 ----> 高

  5. /*
    1.不能对布尔值转换
    2.不能把对象类型转换为不相干的类型
    3.转换的时候存在内存溢出,或者精度问题!!!
    */
    
  6. //当操作数比较大时,注意溢出问题
    //JDK7新特性,数字之间可以用下划线分割
    int money = 10_0000_0000; //10亿,下划线不会被打印出来
    System.out.println(money); //1000000000
    int years = 20;
    
    int total = money*years;  //数据大,溢出
    System.out.println(total); //-1474836480
    
    long total2 = money*years; //默认是int,转换前就有溢出问题
    System.out.println(total2); //-1474836480
    
    long total3 = money*(long)years; //先把一个数转Long
    System.out.println(total3); //20000000000
    
    
  7. public class Hello {
        public static void main(String[] args) {
            int i = 10_0000_0000;
            int b = 20;
            long total = i*((long)b);
            System.out.println(total);
    
        }
    }
    

7.常量、变量

-> 常量

  • 在Java中,用关键字 final 来定义一个常量。

  • 常量一旦初始化后不能再改变的值,不会变动的值。

  • 声明格式:

    ​ final type varName = value;

    • 一般将1,2,3,'a','b',true,false,"helloworld"等称为字符常量;而使用 final 修饰谁说的PI等称为符号常量
    • 命名规则:全部以大写字母书写;用下划线将各个单词隔开。
  • //常量一般用大写字符
    final 常量名=值;
    final double PI=3.14;
    
    //修饰符 不存在先后顺序,static可以写final后面
    static final doube PI=3.14; //类变量,该类下的全局范围
    
  • public class Hello {
    
        static final double PI = 3.14;
    
        public static  void main(String[] args) {
            System.out.println(PI);
        }
    }
    

-> 变量

  • 本质:代表一个“可操作的存储空间”,空间的位置是确定的,但在里面放的位置不确定。

  • 变量的申明:

    • Java是一种强类型语言,每个变量都必须申明其数据类型。
    • 变量的数据类型决定了变量占据存储空间的大小。
  • 变量使用之前必须先赋初始值

  • Java变量是程序中最基本的存储单元,要素包括变量名,变量类型和作用域

//数据类型 变量名 = 值;
type varName [=value][{,varName[=value]}];
//可以使用逗号隔开同多个类型的变量,但不建议在一行定义多个变量
1.变量的分类和作用域
类型 声明位置 从属于 生命周期(作用域)
局部变量 方法或语句块内部 方法/语句块 从申明位置开始,直到方法或语句块执行完毕,局部变量消失
成员变量(实例变量) 类内部、方法外部 对象 对象创建,成员变量也跟着创建;对象消失,成员变量也跟着消失;
静态变量(类变量) 类内部,static修饰 类被加载,静态变量就有效;类被卸载,静态变量消失。
  • public class Variable{
        static int 	allClicks = 0; //类变量
        String str = "hello world"; //实例变量
        
        public void method(){
            int i=0; //局部变量
        }
    }
    
  • public class Hello {
    
        // 类变量  static
        static  double salary = 2_500;
    
        // 属性:变量
    
        // 实例变量:从属于对象:
        String name;
        int age;    //可以不给赋值,如果不自行初始化,会默认赋值这个类型的默认值
                    //布尔值:默认值:false
                    // 除了基本类型,其余默认值为 null
    
        // main 方法
        public static void main(String[] args) {
    
            // 局部变量:必须声明和初始化值
            int i = 100;
            System.out.println(i);
    
            // 变量类型 变量名字 = new Hello();
            Hello hello = new Hello();
            System.out.println(hello.age);
    
            // 类变量 static
            System.out.println(salary);
    
        }
    
        // 其他方法
        public void add(){
    
        }
    }
    
2.变量的命名规范
  • 所有变量、方法、类名:见名知意
  • 类成员变量:首字母小写+驼峰原则:lastName
  • 局部变量:首字母小写+驼峰原则
  • 常量:大写字母和下划线:MAX_VALUE
  • 类名:首字母大写+驼峰原则:Man,GoodMan
  • 方法名:首字母小写+驼峰原则:run(),fastRun()

8.运算符

一、算术运算符

类型 运算符 说明
基本运算符 +、-、*、/ 加、减、乘、除
取余运算符 % 取余
递增和递减 ++、- - 递增、递减
  1. 基本运算符

    int a=10;
    int b=20;
    System.out.println(a/b); //0
    System.out.println((double)a/b); //0.5
    
    long c=12300000000;
    System.out.println(a+b); //int
    System.out.println(a+c); //long 自动转换式子中容量大的数据类型
    
    

    注意:一般分母都不能为0,为0时会发生程序错误;但对于基本运算符,只要将分子定义为double型,分母为0时是正确的,得到的值为无穷大。

  2. 取余运算符

    • 若取余运算的两个操作数都是整数类型。则取余运算的第二个操作数不能为0 ,否则程序出现错误

    • 若取余运算的两个操作数有一个或两个为浮点数,则允许第二个操作数是0或是0.0;只是取余运算得到的结果为NaN(NaN是Java中的特殊数字,表示非数字类型)

    • public class Java04 {
          /*
          * 取余运算
          */
          public static void main(String[] args) {
              double A = 99.0;
              int B =0;
              double C = A%B;
              System.out.println("99.0%0="+C); //NaN
          }
      }
      
  3. 递增和递减

    • // ++自增 --自减 单目运算符
      int a = 3;
      int b = a++; //b=a,a=a+1 先赋值 即b=3 a=4
      int c = ++a; //a=a+1,c=a 先自增 即a=5 c=5
      
      System.out.println(a); //5
      System.out.println(b); //3
      System.out.println(c); //5
      
      

二、关系运算符和逻辑运算符

  1. 关系运算符
类型 说明
== 等于
!= 不等于
> 大于
< 小于
>= 大于或等于
<= 小于或等于
  1. 逻辑运算符

    • && 逻辑与运算:两个变量都为真,结果为true

    • || 逻辑或运算:两个变量有一个为真,结果为true

    • ! 逻辑非(取反),真变为假,假变为真

    • ^ 异或运算符,相同为0,不同为1

    • // 与(and) 或(or) 非(取反)
      boolean a = true;
      boolean b = false;
      
      System.out.println(a&&b); // false
      System.out.println(a||b); // true
      System.out.println(!(a&&b)); // true
      
      int c=5;
      boolean d = (c<5)&&(c++<5); //第一个值为false,后面就不进行判定了
      System.out.println(d); //false
      System.out.println(c); //5 c++未执行
      
      

3.位逻辑运算符(Bitwise Operator)

  • 在Java程序设计中,使用位逻辑运算符来操作二进制数据。如果用在其他进制的数据中,需要先将它们转换成二进制数据。位逻辑运算符可以直接操作整数类型的位,这些整数类型包括long、int、short、char和byte。
    位逻辑运算符

  • /*
        A = 0011 1100
        B = 0000 1101
    
        A&B 0000 1101 按位与
        A|B 0011 1101 按位或
        A^B 0011 0001 异或
        ~B  1111 0010 非
    
        面试题:2*8 怎么算最快? 2<<3
        <<左移  *2 效率极高!!
        >>右移  /2
       */
    System.out.println(2<<3); // 16
    
  1. 条件运算符(三目运算符)

    • int a = 10;
      int b = 20;
      
      a+=b; // a = a+b
      a-=b; // a = a-b
      
      System.out.println(a); //10
      //字符串连接符 + ,转化为String类型,然后拼接    注意!!
      System.out.println(""+a+b); //1020
      System.out.println(a+b+""); //30 先进行运算,再转为String拼接
      System.out.println(a+b+"str"); //30str
      
      
    • // x ? y : z
      //如果x为真,则结果为y,否则为z
      //if(x) y; else z;
      int score = 80;
      String type = score<60?"及格":"不及格";
      System.out.println(type); //及格
      
      

三、运算符的优先级

在这里插入图片描述

9.Java基础06——包机制

  • 为了更好地组织类,Java提供了包机制,由于区分类名的命名空间

  • 包的语法格式:

    package pkg1[.pkg2[.pkg3...]];
    
  • 一般利用公司域名倒置作为包名;com.kuangstudy.www

  • 为了能够使用一个包的成员,需要在Java程序中导入该包

  • import package1[.package2...].(className|*); //通配符* 导入包下所有的类
    
  • 参考:阿里巴巴Java开发手册

10.字符串

字符串(String)是由0或多个字符组成的有限序列,是Java编程语言中表示文本的数据类型。通常一字符串的整体作为操作对象。

10.1.字符串的初始化

// 在Java程序中,使用关键字new来创建String实例
String a = new String();		//创建了一个名为String的类,并把它赋值给变量,但它此时是一个空的字符串
a="I am a person from Chongqing";
String a=new String("I am a person from Chongqing");

10.2. String 类

/*
    1.索引:通过索引函数charAT()可以返回字符串中指定索引的位置;
    索引数字从0开始
    public char charAt(int index);
*/
public static void main(String[] args) {
     String s="IAmChinese";
     System.out.println(s.charAt(5));
}


/*
    2.追加字符串函数 concat()的功能是在字符串的末尾添加字符串
    public String concat(String s)
*/
    public static void main(String[] args) {
        String s="IAmChinese";
        String d="hello";
        System.out.println(s.concat(d));
    }


 /*
    3.比较字符串函数 equalsIgnoreCase()
    判断两个字符串是否完全相同,相同返回TRUE,否则返回一个FALSE
    public Boolean equalsIgnoreCase(String s)
 */
    public static void main(String[] args) {
        String s="IAmChinese";
        String d="hello";
        System.out.println(s.equalsIgnoreCase(d));
    }

/*
    4.取字符串长度
    public int length()
*/
    public static void main(String[] args) {
        String s="IAmChinese";
        System.out.println(s.length());
    }


/*
    5.替换字符串:replace()函数
    替换是两个动作:第一个是查找,另一个是替换
    public String replace(char old,char new)
 */
    public static void main(String[] args) {
        String s="I want I need to go";
        String y=s.replace("go","be going");
        System.out.println(y);
        String x=s.replace('I','Y');
        System.out.println(x);
    }

 /*
    6.字符串的截取函数 substring()
    public String substring(int begin)
    public String substring(int begin,int end)
 */
    public static void main(String[] args) {
        String s="I am Chinese";
        System.out.println(s.substring(2));
    }

/*
    7.字符串大小写转换
    大写字母转换成小写字母
    public String toLowerCase()
    小写字母转换成大写字母
    public String toUpperCase()
 */
    public static void main(String[] args) {
        String s="I WANT I NEED TO GO";
        System.out.println(s.toLowerCase());
        System.out.println(s.toLowerCase().toUpperCase());
    }
    
/*
     8.消除字符串中的空格字符
     trim()可以去除数据两端的空格,在判断数据是否为空且不能全是空格时可以使用。
     trim() 方法不会改变原始字符串。
    trim() 方法不适用于 null, undefined, Number 类型。
*/
    public static void main(String[] args) {
        String username="ManQinXio";
        String password="123 45678";
        if(username.trim().length()==0||password.trim().length()==0){
            System.out.println("Hello!");
        }else {
            System.out.println("No Rule!!!");
        }
    }

10.3. StringBuffer 类

[^StringBuffer类是Java中另一个重要的操作字符串的类。当需要对字符串进行大量的修改时,使用StringBuffer类是最佳的选择。如果想转成 String 类型,可以调用 StringBuffer 的 toString() 方法。]:

  1. 概述:

    • Java.lang.StringBuffer 线程安全的可变字符序列。在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。可将字符串缓冲区安全地用于多个线程。

    • StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。

  2. public class Java06 {
        /*
        * 1.追加字符:
        *   public synchronized StringBuffer append(boolean b)
        * 2.插入字符
        *   public synchronized StringBuffer insert(int offset,String s)
        * 3.颠倒字符
        *   public synchronized StringBuffer reverse()
        */
        public static void main(String[] args) {
            StringBuffer s=new StringBuffer("好久不见!");
            s.append("我的好朋友。");
            System.out.println(s);
    
            StringBuffer b = new StringBuffer("在左,天才在右");
            System.out.println(b.insert(0,"疯子"));
    
            System.out.println(b.reverse());
        }
    }
    

11.JavaDoc生成文档

  • javadoc命令是用来生成自己API文档的

  • 参数信息

    • @author 作者名
    • @version 版本号
    • @since 指明最早用的jdk版本
    • @param 参数名
    • @return 返回值情况
    • @throws 异常抛出情况
  • API文档:https://docs.oracle.com/javase/8/docs/api/

  • 通过命令行生成JavaDoc文档

    1. 打开某个类所在文件夹下的cmd命令行
    2. 输入:javadoc -encoding UTF-8 -charset UTF-8 Doc(类名).java
    3. 会自动生成该类有关的API文档,查看文件夹发现多了一些文件
    4. 打开 index.html(首页)查看文档注释
    5. 在这里插入图片描述
  • 通过IDEA生成JavaDoc文档

    1. 在这里插入图片描述

    2. 在这里插入图片描述

    3. 在这里插入图片描述

    4. 在这里插入图片描述

标签:01,String,int,System,笔记,println,JavaSE,public,out
From: https://www.cnblogs.com/manqingxiao/p/17351162.html

相关文章

  • 《代码大全》阅读笔记2
    二、编写高质量代码1.类软件的首要技术使命就是管理复杂度。可以通过把整个复杂系统分解为多个子系统降低问题的复杂度。关于封装:类很像是冰山,八分之七都在水面以下,你只能看到水面以上的八分之一。抽象数据类型(ADT)是指一些数据以及在这些数据上所能进行的操作的集合。考虑类......
  • Serre算术教程Chapter 5笔记
    二次型的范畴论定义考虑这样一个范畴\(S_n\),由一些freeabeliangroupofrank\(n\)\(E\)组成Definitionoffreeabeliangroup一个有basis的abeliangroup.这里basis就是那个基的意思,everyelementcouldbeuniquelyexpressedasanlinearcombinationoffinitelyma......
  • P2671 [NOIP2015 普及组] 求和
    here看到这个条件,想到等差数列,于是假设了1,3,5位置上的颜色一样时,总和是多少,然后发现是:(1+1+3+5)f(1)+(1+3+3+5)f(3)+(1+3+5+5)f(5)现在看的很清楚了,有两种可能:(i+配对的数之和+i)f(i)或者(i*配对的数的个数+配对的数之和)f(i)。看看样例1,发现后......
  • 4.24 贪心法学习笔记
    多写题解多交流才能学好oi。在这里贴了代码,为了看上去完整一些。 大概是一些自己学习的记录罢。贪心不算客观意义上的算法,感觉还不算一种策略机制。我认为更像一种思路,其内涵就是择优,解题时就去想怎样才能更优。根据最优的思路能去做很多,如果说贪心是一个题的正解的话太抽......
  • 单调栈学习笔记
    单调栈基础单调栈根据所维护的单调性可以分为四种:严格递增栈。必须出栈至栈空或栈顶小于当前元素后,才入栈当前元素。严格递减栈。必须出栈至栈空或栈顶大于当前元素后,才入栈当前元素。非严格递增栈。必须出栈至栈空或栈顶小于等于当前元素后,才入栈当前元素。非严格递减栈。......
  • [oeasy]python0139_尝试捕获异常_ try_except_traceback
    尝试捕获异常回忆上次内容变量相加整型数字变量可以相加字符串变量也可以拼接但是字符串和整型数字整型数字和字符串不能相加怎么办?转格式int("1")str(2)可是如果输入的苹果数量是字符串"abc"int("abc")会发生什么??......
  • [oeasy]python0139_尝试捕获异常_ try_except_traceback
                               -不但要有自己的报错-还要保留系统的报错-有可能吗?​###保留报错​![图片描述](https://doc.shiyanlou.com/courses/uid......
  • 【学习笔记】快速傅里叶变换
    怎么有人省选后才来学FFT啊由于时间原因,本篇笔记仅为个人总结,真正想要学习FFT的请参看这篇博客。前置知识单位根性质:$w_n^{2k}=w_{n/2}^k$$w_n^a+w_n^b=w_n^{a+b}$算法原理可知n+1个点可以唯一确定一条n次多项式,于是可以用n个点的点对集合表示一条曲线。......
  • SpringMVC01_MVC的执行和注解开发
    一、SpringMVC概述​ SpringMVC是Spring框架的一个模块,因此SpringMVC无需和Spring进行整合就可以使用。SpringMVC是一个基于MVC的Web框架,即SpringWebMVC。SpringWebMVC和Struts2都属于表现层的框架,它是Spring框架的一部分。​<!--引入Spring框架的We......
  • BSGS(大步小步算法)学习笔记
    解决高次同余问题。\(a^x\equivb(\modp)\),其中\(a\)与\(p\)同余。这个形式与欧拉定理类似。思想:meetinthemiddle(折半搜索)。具体的,令\(x=A\timest-B\),且\(x\)一定在\([0,\phi(p))\)的范围内。但是\(p\)是质数时复杂度还是会爆炸。将\(x=A\timest-B\)带入......