Java基础

注释

//    单行注释

/* 
      多行注释
*/

JavaDoc:文档注释

/**
*@Description
*可在此处加参
*/

标识符

关键字

Java的所有组成部分都需要关键字类名、变量名、方法名都称为标识符
所有的标识符都应该以(a-z)或(A-Z),美元符($),或下划线(_)开始
标识符是大小写敏感的,不能用关键字作为变量名方法名

数据类型

Java是一种强类型语言,所有的变量都必须先定义才能使用

基本数据类型:
                    byte     //占1个字节 -128~12
                    short    //占两个字节范围 -32768~32767
          整数类型 
                    int      //占4个字节范围 -2147483648~21474832647
                    long     //占8个字节范围 特别长 /*他需要在数字后面加L 例如:long a = 30L;*/
数值类型      
                    float    //占4个字节 /*他需要在数字后面加F 例如:long b = 50.1F;*/
          浮点类型
                    double   //占8个字节

          字符类型   char     //占2个字节

boolean类型(布尔) 占一位,其值只有true和false

PS:char是一个字符,例:char name = '王';引号里面只能是单一王字或者一个A。
   String字符串,他不是关键字,而是一个类。


引用数据类型:
  类,接口,数组

字节

位(bit):是计算机最小存储单位
字节(byte):是计算机数据处理的基本单位,习惯使用大写B
1B = 8 bit
字符:指计算机中使用的字母,数字,字和符号

数据类型扩展

整数拓展

常见进制:二进制(ob) 八进制(0) 十进制 十六进制(0x)

public class demon01{
  public static void main(){
    int a = 10;     //十进制,输出10
    int b = 010;    //八进制,输出8
    int c = 0x10;   //十六进制,输出16
 }
}

浮点数拓展

float字长是有限的,离散,舍入误差,接近但不等于
因此,最好完全避免使用浮点型数进行比较,否则当浮点数过大,小数位过多,他们在计算时可能会值相等。

在银行业务时,,不能使用浮点数,使用数学工具类:BigDecimal

字符拓展

public class demo01{
  public static void main(){
    char c1 = 'a';
    char c2 = '中';
  System.out.println((int)c1);  //对其进行强制类型转换,最终输出结果为97
  System.out.println((int)c2);  //对其进行强制类型转换,最终输出结果为20013

  //所有的字符本质上还是数字
  //编码使用的是unicode编码,占2字节  (97 = a  65 = A)
      
  char c3 = '\u0061';
  System.out.println(c3);   //输出a

 }
}

转义字符

\t,在这里它相当于tab键

public class demo01{
  public static void main(){

  System.out.println("hello\tworld");  //最终输出结果为hello  world;

\n,换行符,将其换行

public class demo01{
  public static void main(){

  System.out.println("hello\nworld");  
//最终输出结果为
//hello  
//world

PS:还有更多转义字符,需自行查找使用

布尔值拓展

boolean flag = true;
  if (flag == true)  {}
  if (flag){}
//这两行代码本质相同

类型转换

由于Java是强类型语言,所以在进行某些计算的时候需要用到类型转换
运算中,不同类型的数据先转换为同一类型,然后进行计算
低 ------------------------------------->高(容量)
byte,short,char--> int--> long--> float --> double(小数优先级高于整数)

public class demo01{
  public static void main(){
    int i = 128;
    byte b = (byte)i;   //内存溢出,因为byte的最大值为127

  //该语法为强制类型转换  (类型)变量名
  System.out.println(i);  //会显示128 
  System.out.println(b);  //会显示-128

以上为强制类型转换,强度由高到低,自动类型转换为低到高

public class demo01{
  public static void main(){
    int i = 128;
    double b = i;  

  System.out.println(i);  //会显示128 
  System.out.println(b);  //会显示128.0

以上转换为低到高的转换,无需任何操作,即可自动完成
PS:1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.在把高容量转换为低容量的时候,需要进行强制类型转换
4.进行强制类型转换的时候可能会导致内存溢出或者精度问题
(double和float转为为int类型时,会自动舍去小数位)
5.char类型也可以进行强制类型转换,他本质是unicode编码

操作较大数的时候,注意他的溢出

public class demo01{
  public static void main(){
  //JDK7新特性,数字之间可以用下划线进行分割
  int money = 10_0000_0000;
  int yeat = 20;
  int total = moeny*year;      //输出-1474826480,计算时溢出
  long total2 = moeny*year;    //输出-1474826480,计算时已经出现溢出问题,默认int,计算完转为long类型已经无效
  long total3 = moeny*((long)year);  //正确输出20000000000
  Steam.out,println(tatal3);
 }
}

变量

变量是什么:就是可以变化的量
Java是一种强类型语言,每种变量必须提前声明其类型
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域

   type    varName [=value] [{,varName[=value]}]
//数据类型  变量名   = 值;可以使用逗号隔开来声明多个同类型变量.

public class demo01{
  public static void main(){
    int a = 1;
    int b = 2;
    int c = 3;
  }
}

PS:每个变量都有类型,类型可以是基本类型,也可以是引用类型
变量名必须要有合法的标识符
变量声明是一条完整的语句,因此每条声明语句都必须以分号结尾
不建议逗号隔开多个变量,因为特别麻烦

变量作用域

public class demo01{
  static int allClicks = 0;     //类变量,他需要加一个关键字static
  String str = "hello world";   //实例变量

  public void method(){
    int i = 0;                  //局部变量,写在方法里面的变量 
  }
}

举例:

public class demo02{
//整个demo02为一个类,在这个类里面写一些属性:变量

//类变量,加了关键字static,获得他的属性
static double salary = 3000;  //salary 工资

static{
//这是一个方法块,所定义的变量也只能在此使用,但是其作用域高,方法块的关键字为static
  }

//实例变量,从属于demo02(对象)
String name;  //将其初始化,他会显示u0000,未初始化输出null
int age;      //如果不自行初始化,会显示0,浮点型输出0.0,布尔值输出false
              //除了基本类型(int,short等),未初始化都输出其默认值null

//这个为主程序方法,为main方法
public static void main(){
  //局部变量写在方法里面的,必须声明和初始化值
   int i = 10;
   System.out.println(i);  //这样才能正确输出10,且这个i只能在这个main方法内使用,其他地方无法识别

 //变量类型  变量名称 = new Demo02()
   Demo02 demo02 = new Demo02();
//此处也可写为 String varDemo = new Demo02(); 
   System.out.println(demo02.name);  //未对其初始化,输出null
   System.out.println(demo02.age);   //未对其初始化,输出其默认值0

 //类变量,加了关键字static,获得他的属性,这样在任何一个地方都可以使用
  System.out.println(salary);  //输出3000

  }

//其他方法
public void add(){
  }
}

常量

常量:初始化之后不会再变动的值
可以理解为一种特殊的变量,在设定值之后,在程序运行之后不允许改变

final 常量名 = 值;       //使用关键字final
final double PI = 3.14;  //常量名一般使用大写字符

举例

public class demo02{
  //修饰符不分前后顺序,double之前的都为修饰符
  static final double PI = 3.14;
  public static void main(){
      System.out.println(PI);  //输出为3.14
  }
}

变量命名规范

  • 所有变量,方法,类名:见名知其意
  • 类成员变量:首字母小写和驼峰原则:monthSalary(除第一个单词外,其余首字母都大写)
  • 局部变量:首字母小写和驼峰原则
  • 常量:大写字母和下划线:MAX_VALUE:多个单词之间连接用下划线(_)连接
  • 类名:首字母大写和驼峰原则:Man,GoodMan
  • 方法名:首字母小写和驼峰原则:run(),runRun()

基本运算符

  • 算数运算符:+,- ,*,/,%,++,--
  • 赋值运算符:=
  • 关系运算符:>,<,>=,<=,==,!=instanceof
  • 逻辑运算符:&&,||,!
  • 条件运算符:? :
  • 扩展赋值运算符:+=,-=,*=,/=
public class demo03{
  public static void main(){
   //二元运算符,需要多个数进行运算
   //ctrl + D 将当前行复制到下一行 iDEA专用
   int a = 10;
   int b = 20;
   int c = 25;
   int d = 25;

  System.out.println(a+b);  //输出30
  System.out.println(a-b);  //输出-10
  System.out.println(a*b);  //输出200
  System.out.println(a/b);  //输出0
  //除法注意强制类型转换,有小数会舍去
  //System.out.println(a/(double)b);  //输出0.5,正确写法
 }
}
public class operator{           //operator 运算符
  public static void  main(){
    long a = 123123123123123L;
    int b = 123;
    short c = 10;
    byte  d = 8;
  System.out.println(a+b+c+d);  //输出123123123123264 long类型的
  System.out.println(b+c+d);    //输出141 int类型的
  System.out.println(c+d);      //输出18(当数据中有long类型的数据时,结果都为long类型,其余默认为int类型)
                                //cast 转换    
  }
}      

关系运算符

public class operator{           //operator 运算符
  public static void main(){
    //关系运算符返回结果为布尔类型,只会返回true和false
    //多与if连用
    int a = 10;
    int b = 20;
    int c = 22;

  System.out.println(c%a);    // 22 / 10 = 2...2,所以显示2,取余又叫做:模运算
  System.out.println(a > b);  //输出false  
  System.out.println(c < a);  //输出true 
  }
}

自增自减运算符

public class operator{           //operator 运算符
  public static void main(){
    int a = 3;
    int b = a++;
    System.out.println(a);  //输出4
  
    int c = ++a;

  System.out.println(a);    //输出5
  System.out.println(b);    //输出3
  System.out.println(c);    //输出5

//上面先是a++执行后自增,先把3赋值给b,在执行一次自增,此时a=4;再执行一次先自增,先自增1,此时a=5,再把值赋给c,所以
//此时a为5,b为3,c为5
  }
}

maths数学工具类

public class operator{           //operator 运算符
  public static void main(){
    double pow = math.pow(3,2);
    System.out.println(pow;)  //最终会输出9,3的2次方,幂运算只能这样运算
    //很多运算使用工具类来做,Java里不可以直接写出来
  }
}

逻辑运算符

public class operator{           //operator 运算符
  public static void main(){
    //与 &&(and) 或 ||(or) 非 !(取反)
    boolean a = true;
    boolean b = false;

    Systrm.out.println("a && b:"+(a&&b));      //逻辑与运算,两个都为真,结果才为真
    Systrm.out.println("a || b:"+(a||b));      //逻辑或运算,两个其中一个为真,结果都为真
    Systrm.out.println("!(a && b):"+!(a&&b));  //如果为真,则为假,如果为假则为真  
    //第一个显示false,第二个显示true,第三个显示true
  
    //短路运算
    int c = 5;
    boolean d = (c<4)&&(c++<4);
    System.out.println(d);    //输出false
    System.out.println(c);    //输出5
    //该例子指出,当执行与运算时,倘若第一个就发现为假,则中断运算,直接输出为假,否则该输出c= 6
  }
}

三元运算符

注意,三元运算符看做一个整体,不管最后输出谁,输出结果都以最高精度为准

public class operator{           //operator 运算符
  public static void main(){
    int a = 10;
    int b = 20;
     
    a += b;  //a = a + b
    a -= b;  //a = a - b

    //字符串连接符 + 
    System.out.println(""+a+b);  //输出1020(当字符串出现在前面时,后面默认是连接,所以吧10和20连起来了)
    System.out.println(a+b+"");  //输出30
  }
}
public class operator{           //operator 运算符
  public static void main(){
    //x ? y : z
    //如果x==true,则结果为y,否则结果为z    
    int score = 50;
    String type = score < 60 ? "不及格" : "及格";
    System.out.println(type);  //输出不及格,若score为60,则输出及格
  }
}

优先级
高--------------------------------->低
括号 >(.)> 自增自减 > 一元运算符 > 二元运算符 > 三元运算符*

包机制

为了更好的组织类,java提供了包机制,用于区分类别的命名空间
语法格式:
package pack1[ .pck2[ .pck3]];

一般将公司域名倒置作为包名 //com.baidu.wwww

为了能使用某一个包的成员,需在java导包,使用import导入
语法格式:
import package1[ .package2[ .package3]];

import com.baidu.www. // * 导入包内的所有类*

JavaDoc

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

参数信息:

  • @author 作者名
  • @verson 版本号
  • @since 指明需要最早使用的jdk版本
  • @param 参数名
  • @return 返回值情况
  • @throws 异常抛出情况
posted @ 2025-03-01 15:53  sprint077  阅读(5)  评论(0)    收藏  举报