Java基础知识

Java基础知识

新建空项目

  1. New Project->Empty Project

  2. File->New->Module(模块)

  3. File->Project Structure->Project

    • 设置SDK为1.8

    • 设置Language level为8

  4. src文件夹右键->New->Java class

注释

  • 单行注释 // //

  • 多行注释 /* */

  • 文档注释 /** */

 public class HelloWorld {
     public static void main(String[] args) {
         System.out.println("Hello,world!");
     }
 }
 //单行注释
 ​
 /*多行注释
 多行注释
  */
 ​
 /**
  * @deprecated Hello,World!
  * @Author 小明
  */

标识符和关键词

  1. 常见关键词

   

 

  1. 标识符注意

    • 标识符应以字母(A-Z,a-z),美元符$,下划线_开头

    • 首字母后可以使用字母、数字、下划线

    • 不能使用关键字作为变量名或方法名

    • 可以使用中文命名,但不建议

数据类型

  1. Java基本数据类型

    • 基本类型(primitive type)

    • 引用类型(reference type)

  

 

 public class Demo{
     public static void main(String[]){
         //八大基本数据类型
         
         //整数
         int num1=10;
         byte num2=20;
         short num3=30;
         long num4=30L;//长整型后要加L
         
         //小数:浮点数 
         float num5=50.1F;//float后要加F
         double num6=3.1415926;
         
         //字符
         char name='国';
         //字符串,注意String不是关键字,属于引用数据类型-类
         String name="中国";
         
         //布尔值
         boolean flag=true;
         bollean flag=false;
     }
 }

数据类型扩展

  • 整数扩展

  • 浮点数扩展

  • 字符扩展

  • Unicode码

  • 转义字符

  • 内存

  • 布尔值

 public class Demo{
     public static void main(String[] args){
         //整数扩展:进制 二进制0b;十进制;八进制0;十六进制0x
         int i=10;//十进制
         int i2=010;//八进制
         int i3=0x10;//十六进制
         System.out.printIn(i);
         System.out.printIn(i2);
         System.out.printIn(i3);
         System.out.printIn("================ ");
         
         //浮点数扩展  浮点数一般具有舍入误差 一般都为大约的数字 不精确
         float f=0.1f;
         double d=1.0/10;
         System.out.printIn(f==d);//false
         
         float d1=231321312311231f;
         float d2=d1+1;
         System.out.printIn(d1==d2);//true
         System.out.printIn("================ "); 
         
         //字符扩展 字符<==>数字
         char c1='a';
         System.out.printIn((int)c1);
         //编码Unicode   \u开头
         char c3='\u0061';
         System.out.printIn(c3);
         System.out.printIn("================ ");   
         
         //转义字符  \t 制表符  \n 换行
         System.out.printIn("Hello\nWorld");
         System.out.printIn("================ ");  
         
         //内存
         String sa=new String(original:"hello,world");
         String sb=new String(original:"hello,world");
         System.out.printIn(sa=sb);//false
         String sc="hello,world";
         String sd="hello,world";
         System.out.printIn(sc=sd);//true
         
         //布尔值
         boolean flag=true;
         if(flag){}
         if(flag==true){}
     }
 }

数据类型转换

  1. 类型转换顺序

    低------------------------------------->高

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

    从低到高要强制类型转换

    从高到低自动类型转换

  2. 注意点:

    • 布尔类型不能转换

    • 不能把对象类型转换为不相关类型

    • 高容量转到低容量时,需要强制转换

    • 转换可能存在内存溢出或者精度问题

 public class Demo{
     public static void main(String[] args){
         int i=128;
         byte b=(byte)i;//强转 内存有溢出
         double b1=i;//自动转换
         System.out.printIn(i);
         System.out.printIn(b);
         System.out.printIn(b1);
         
         System.out.printIn("================ "); 
         System.out.printIn((int)23.7);//23
         System.out.printIn((int)-45.89f);//-45
         
         System.out.printIn("================ "); 
         char c='a';
         int d=c+1;
         System.out.printIn(d);
         System.out.printIn((char)d);    }
 }
  1. 大数运算时可能存在溢出问题

 public class Demo{
     public static void main(String[] args){
         int money=10_0000_0000;
         int years=10;
         int total=money*years;//溢出,计算的时候溢出
         long total1=money*years;//溢出,转换前已经溢出,再转换没意义
         long total2=money*((long)years); //未溢出
         System.out.printIn(total);
         System.out.printIn(total1);
         System.out.printIn(total2);
     }
 }

变量、常量、作用域

  1. 变量

    • 变量名

    • 变量类型

    • 作用域

      • 类变量

      • 实例变量

      • 局部变量

 public class Demo1 {
     //类变量 需要加static
     static double salary=2500;
     //==========================
     /*在类内定义的变量为实例变量,可以不初始化
     对于未初始化值会默认初始值(数值初始值为0或0.0,字符为0000,布尔为false,其余都为null)
      */
     String name;
     int age;
     public static void main(String[] args) {
         //============================
         //方法中定义的变量为局部变量,必须同时声明和初始化
         //局部变量
         //int i;未初始化报错
         int i=10;
         System.out.println(i);
         //实例变量
         Demo1 demo1 = new Demo1();//对于实例变量必须先new对象,再调用。快捷键Alt+Enter
         System.out.println(demo1.name);
         System.out.println(demo1.age);
         //类变量 类变量不需要new对象,可直接使用
         System.out.println(salary);
     }
 }
 ​
  1. 常量

    • 初始化后不能再改变的值

    • 定义常量前要加修饰符final 常量名=值

    • 常量名一般使用大写字符

 public class Demo{
     //修饰符,不区分先后顺序 如public,static,final
     static final double PI=3.14;//定义的为类常量
     public static void main(String[] args){
         System.out.printIn(PI);
     }
 }
  1. 命名规范

    • 见名知意

    • 变量:首字母小写和驼峰原则,如monthSalary

    • 常量:大写字母和下划线,如MAX_VALUE

    • 类名:首字母大写和驼峰原则,如Man,GoodMan

    • 方法名:首字母小写和驼峰原则,如run(),runRun()

运算符

  • 常见的运算符

    • 算术运算符:+,-,*,/,%,++,--

    • 赋值运算符:=

    • 关系运算符:>,<,>=,<=,==,!=instanceof

    • 逻辑运算符:&&,||,!

    • 位运算符:&,|,^,~,>>,<<,>>>

    • 条件运算符:?:

    • 扩展赋值运算符:+=,-=,*=,/=

  • 注意

    • 整数四则运算中含有long型,运算后结果为long;不含long型,则运算后结果都为int

    • 关系运算结果为布尔型

    • b=a++;先执行b=a,再执行a=a+1

    • b=++a;先执行a=a+1,再执行b=a

    • 对于复杂数学运算要借助数学类Math

  • 逻辑运算符与位运算符

    • &&(与运算):同真为真,特殊短路运算(即当与运算前面值为假时,程序不再执行与运算,结果必为假)

  • ||(或运算):有一个真即为真

    • !(非运算):真变假,假变真

  • &(按位与):按位同真为真

    • |(按位或):按位存在真即为真

    • ~(按位非):按位取相反数

    • ^(按位异或):按位相同取1,不同区0

    • <<左移一位:相当于数值乘以2

    • &lt >>右移一位:相当于数值缩小2倍

  • 字符串连接操作

    使用+号可以实现字符串连接操作,只要连接的数据中含有字符类型

     public class Demo2 {
         public static void main(String[] args) {
             int a=10;
             int b=20;
             System.out.println(""+a+b);//1020
             System.out.println(a+b+"");//30 当字符在后面时,先运算a+b再运算+""
         }
     }
  • 三元运算符

     public class Demo{
         public static void main(String[] args){
             //三元运算符 x?y:z
             //如果x==true,则结果为y,否则为z
             int score=50;
             String type=score<60?"及格":"不及格";
             System.out.printIn(type);
         }
     }
  • 运算优先级

包机制

  • 包用于区别类名的命名空间

  • 一般用公司的域名倒置作为包名

    • 如com.baidu.www

    • com.zhang.xxx

  • 包语法格式为:

    • package pkg1[. pkg2[. pkg3...]]

  • 为了能使用包中成员,使用import调用

    • import package[.package2...].(classname|*);

  • IDEA中的包可以通过Project->小齿轮->Tree Appearance->Compact Middle Package来显示和隐藏中间包

 package com.kuang.operator;//包格式
 ​
 import com.kuang.*;//导入kuang中的所有成员
 import com.kuang.Demo1;//导入kuang中的Demo1
     

JavaDoc

  1. 官方JavaDoc帮助文档可以查看官方API信息, Java SE 文档 - API 和文档 | Oracle 中国

  2. 自建的API可以使用javadoc命令生成文档

  3. 常见的参数信息有

    • @author作者

    • @version版本号

    • @since指明需要最早使用的jdk版本

    • @param参数名

    • @return返回值情况

    • @throws异常抛出情况

 package JavaSE.ChunYang;
 ​
 /**
  * @author XiaoMing
  * @version 1.0
  * @since 1.8
  */
 public class Demo {
     String name;
 ​
     /**
      * @author XiaoMing
      * @param name
      * @return
      * @throws Exception
      */
     public String test(String name) throws Exception{
         return name;
     }
 }
posted @ 2022-04-04 20:14  ray963  阅读(43)  评论(0)    收藏  举报