首页 > 编程语言 >基础Java学习笔记(一)

基础Java学习笔记(一)

时间:2023-02-28 10:13:50浏览次数:45  
标签:Java String int System 笔记 学习 println public out

学习笔记01

两年前学的Java,现在已经忘得差不多了,跟着狂神说Java的视频从头开始学,希望能救一救ww

一、JDK JRE JVM

1. JDK

java development kit

2. JRE

java Runtime Environment

3. JVM

java virtual machine

二、java代码编写

public class Hello{//类
    public static void main(String[] args){//main方法
        System.out.println("Hello World!");//输出
    }
}

三、java程序运行机制

  • 编译型

    一下子全部编译完成,对操作系统要求低,c,c++

  • 解释型

    一点一点解释/编译,

    java源文件通过javac命令预编译为class文件

四、idea

1. IDE

集成开发环境

2. 安装

参考

安装教程

五、Java基础语法

1. 注释 标识符 关键字

1. 注释

注释是一个非常好的习惯

2. 关键字

3. 标识符

标识符不能使用关键字,且大小写敏感,能用中文但不推荐。

2. 数据类型

1. 强类型语言

要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用(安全性高)

java c++

2. 弱类型语言

3. Java的数据类型分为两大类

  • 基本类型
    1. 数值类型
    2. boolean类型
        //八大基本类型
        int num1 = 10;//4字节
        byte num2 = 20;//1字节
        short num3 = 30;//2字节
        long num4 = 30L;//8字节 Long类型要在数字后面加L

        //小数:浮点数
        float num5 = 50.1F;//4字节
        double num6 = 3.1415936535;//8字节

        //字符
        char name = 'A';//2字节
        //字符串 String 不是关键字,而是类
        String namea = "tyrantblue";
        
        //布尔值
        boolean flag = true;//占1位,8位等于1字节
        //boolean flag1 = false;

类型扩展

public class Demo03 {
    public static void main(String[] args) {
        //整数拓展: 进制 二进制0b 十进制 八进制0 十六进制x

        int i = 10;
        int i1 = 010;
        int i2 = 0x10;
        int i3 = 0b10;
        System.out.println(i);
        System.out.println(i1);
        System.out.println(12);
        System.out.println(i3);
        System.out.println("===================================================");
        //浮点数拓展:    银行业务如何表示?
        //BigDecimal
        //======================================================================
        //float 有限  离散  舍入误差    大约  接近但不等于
        //double
        //最好避免完全使用浮点数去比较
        //最好避免完全使用浮点数去比较
        //最好避免完全使用浮点数去比较

        float f = 0.1f;//0,1
        double d = 0.1;//0.1

        System.out.println(f==d);//false

        float d1 = 23475932458739475384f;
        float d2 = d1 + 1;

        System.out.println(d1==d2);//true

        //=============================================================
        //字符拓展
        //=============================================================
        System.out.println("===================================================");

        char c1 = 'a';
        char c2 = '中';

        System.out.println(c1);

        System.out.println((int)c1);

        System.out.println(c2);

        System.out.println((int)c2);
        
    }
}

遇到了输出中文乱码的问题,参考这篇文章解决了

解决idea中不能输出中文问题

所有的字符本质都是数字,存在一个Unicode表,占两字节,用\u来转义

		//转义字符
        //  \t  制表符
        //  \n  换行符
        //  ......
        System.out.println("Hello world!");
        System.out.println("===================================================");
        String sa = new String("hello world");
        String sb = new String("hello world");
        System.out.println(sa==sb);//false

        String sc = "hello world";
        String sd = "hello world";
        System.out.println(sc==sd);//true
        //对象 从内存分析

        //布尔值扩展
        boolean flag = true;
        if(flag==ture){}//新手
        if (flag){}//老手
        //Less is more! 代码要精简易读

  • 引用类型
    1. 接口
    2. 数组

4. 类型转换

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

    由低到高

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

  • 运算中,不同类型的数据先转化为同一类型,然后进行运算。

  • 小数的优先级一定大于整数

public class Demo05 {
    public static void main(String[] args) {
        int i = 128;
        byte b = (byte)i;//内存溢出,byte大小为2字节
        System.out.println(b);//-128
        //强制类型转换    (类型)变量名 高-->低
        //自动转换转换    低-->高
        /*
        注意点:
        1. 不能对布尔类型进行转换
        2. 不能把对象类型转换为不相干的类型
        3. 在把高容量转化为低容量时,用强制转换
        4/ 转换的时候可能存在内存溢出,或者精度问题!!!
        */

        System.out.println("======================================");
        System.out.println((int)23.7);//23
        System.out.println((int)-45.89f);//-45


        System.out.println("======================================");
        char c = 'a';
        int d = c+1;
        System.out.println(d);//98
        System.out.println((char)d);//b
    }
}

  • 溢出的一些问题
public class Demo06 {
    public static void main(String[] args) {
        //操作比较大的数时,注意溢出问题
        //JDK7的新特性(我已经更到JDK19了(= = ) 数字之间可以用下划线分割
        int money = 10_0000_0000;
        int years = 23;
        int total = money*years;//1525163520, 已经溢出了

        System.out.println(total);
        long total2 = money*years;//1525163520, 溢出了再转换没有用
        System.out.println(total);

        long total3 = money*(long)years;//23000000000,先转换为long类型就不会溢出
        System.out.println(total3);
    }
}

3. 变量 常量

1. 变量

  • 变量就是可以变化的量
  • Java是一种强类型语言,每个变量都必须声明其类型
  • Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
type varName [=value] [{,varName[=value]}];
//数据类型 变量名 = 值 ; 可以使用逗号隔开来声明多个同类型变量
  • 注意事项:
  1. 每个变量都有类型,类型可以是基本类型,也可以是引用类型
  2. 变量名必须是合法的标识符
  3. 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
public class Demo07 {
    public static void main(String[] args) {
        //int a=1,b=2,c=3;不建议一行定义多个变量   //注意程序可读性
        int a=1;
        int b=2;
        int c=3;
        String name = "tyrantblue";
        char x = 'X';
        double pi = 3.14;
    }
}

2. 变量作用域

  • 类变量
  • 实例变量
  • 局部变量
public class Demo08 {

    //属性:变量

    //实例变量:从属于对象;如果不初始化,会赋为这个类型的默认值 0或0。0
    //布尔值默认值为false
    //除了基本类型,其余默认值为null
    String name;
    int age;

    //类变量 static
    static double salary = 2500;

    //main方法
    public static void main(String[] args) {

        //局部变量:必须声明和初始化值
        int i = 10;
        System.out.println(i);

        //变量类型 变量名字 = new Demo08();
        Demo08 demo08 = new Demo08();
        System.out.println(demo08.age);
        System.out.println(demo08.name);

        //类变量 static
        System.out.println(salary);

    }
    
    //其他方法
    public void add(){
        //System.out.println(i);
        //不能输出
    }
}

3. 常量

  • 常量是初始化后不能再改变的值,是不会变动的值
  • 常量可以理解为一种特殊的变量,它的值被设定后,在程序运行的过程中不允许被改变
  • 常量名一般使用大写字符
public class Demo09 {

    //修饰符不存在先后顺序
    //final 常量名=值;
    static final double PI = 3.14;

    public static void main(String[] args) {
        System.out.println(PI);
    }
}

4. 变量的命名规范

  • 所有变量、方法和类名要见名知意
  • **类成员变量:首字母小写和驼峰原则:moonthSalary 除了第一个单词外后面的单词首字母大写 **
  • 局部变量:首字母小写和驼峰原则
  • 常量:使用大写字母和下划线
  • 类名:首字母大写和驼峰原则:Man,GoodMan
  • 方法名:首字母小写和驼峰原则:run(), runRun()

4. 运算符

  • java语言支持如下运算符
  1. 算数运算符: +, -, *, /, %, ++, --
  2. 赋值运算符: =
  3. 逻辑运算符: >, <, >=, <=, ==, !=, instanceof
  4. 位运算符: &&, ||, !
  5. 条件运算符: &, |, ^, ~ ,>>, <<, >>>
  6. 扩展赋值运算符: +=, -=, *=, /=

1. 算数运算符

package operator;

//二元运算符
public class Demo01 {
    public static void main(String[] args) {
        //Ctrl + D :复制当前行到下一行
        int a = 10;
        int b = 10;
        int c = 10;
        int d = 10;
        System.out.println(a + b);
        System.out.println(a - b);
        System.out.println(a * b);
        System.out.println(a / b);
    }
}

2. 算数运算符拓展

package operator;

public class Demo02 {
    public static void main(String[] args) {
        long a = 12312414353523142L;
        int b = 123;
        short c = 10;
        byte d = 8;

        System.out.println(a+b+c+d);//Long
        System.out.println(b+c+d);//Int
        System.out.println(c+d);//Int
        //有Long那么一定是Long,有Double一定是Double
        //其他有无int结果都是int
    }
}

3. 关系运算符

package operator;

//关系运算符返回的结果:   正确 or 错误 用boolean
public class Demo03 {
    public static void main(String[] args) {

        //if

        int a = 10;
        int b = 20;
        int c = 41;

        System.out.println(a > b);//false
        System.out.println(c > b);//true

        //取余运算符 % 求模
        System.out.println(b % a);//0
        System.out.println(c % a);//1
    }
}

4. 自增自减

package operator;

//++ -- 自增,自减   一元运算符
public class Demo04 {
    public static void main(String[] args) {
        int a = 3;

        int b = a++;//先赋值后自增
        //a++ ==> a=a+1,
        System.out.println(a);//4
        int c = ++a;//先自增后赋值
        //++a ==> a=a+1
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);

        //幂运算2^3 2*2*2 = 8
        double pow=Math.pow(2, 3);
        System.out.println(pow);
    }
}

5. 逻辑运算符

package operator;

//逻辑运算符
public class Demo05 {
    public static void main(String[] args) {
        //与(and) 或(or) 非(取反)
        boolean a = true;
        boolean b = false;

        System.out.println("a && b: "+ (a&&b));//逻辑与运算,两个都为真结果才为true
        System.out.println("a || b: "+ (a||b));//逻辑或运算,两个有一个为真结果就为true
        System.out.println("!(a && b): "+ !(a&&b));//假变真,真变假

        //短路运算
        int c = 5;
        boolean d = (c<4)&&(c++<4);//如果前面已经短路后面就不会执行
        System.out.println(c);//5
        System.out.println(d);//false
    }
}

6. 位运算

package operator;

public class Demo06 {
    public static void main(String[] args) {
        /*
        A = 0011 1100
        B = 0000 1101

        A&B = 0000 1100
        A|B = 0011 1101
        A^B = 0011 0001//      异或:相同为0,不同为1
        ~B = 1111 0010

        2*8 = 16怎么运算最快?
        << >>左移右移
        << 左移代表*2
        >> 右移代表/2
        0000 0000   0
        0000 0001   1
        0000 0010   2
        0000 0100   4
        0000 1000   8
        0001 0000   16
        */

        System.out.println(2<<3);//16
    }
}

7. 扩展运算符

package operator;

public class Demo07 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        a+=b;//a = a + b;
        a-=b;//a = a - b;
        System.out.println(a);//10

        //字符串连接符 + ,String在 + 前面,后面的都会转换成String进行连接
        //String在 + 后面,前面会进行算数运算
        System.out.println(""+a+b);//1020
        System.out.println(a+b+"");//30
    }
}

8. 三元运算符

package operator;

public class Demo08 {
    public static void main(String[] args) {
        // x ? y : z
        //如果x==true, 则结果为 y, 否则结果为 z
        //必须掌握,可以让代码更加精简

        int score = 80;
        String type = score < 60 ? "不及格":"及格";//及格
        System.out.println(type);
    }
}

这里遇到了控制台输出中文全是问号的情况,应该是编码的问题,但试过了网上的方法都不太行,最后解决方法是将jdk换回以前的版本,我之前的jdk版本为19,换回jdk1.8然后再把编码调成UTF-8.

  • 优先级用括号更加清楚明了

5. 包机制

  • 包的本质就是文件夹
  • 一般利用公司域名倒置作为包名

遇到了空包直接折叠的情况,解决方法为Project右边的设置,取消勾选Compact Middle PacKages

  • 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包,使用”import“语句可以完成此功能
import com.xxx.xxx;
import com.xxx.*;//*是通配符,代表导入该包下所有的类

package语句要在代码最前面

尽量不要让包里面的名字重复

6. JavaDoc

jdk8在线帮助文档

  • Javadoc命令是用来生成自己API文档的
  • 控制台生成如下
D:\Code\java\javaSE\基础语法\src\com\tyrantblue\base>javadoc -encoding UTF-8 -charset UTF-8 Doc.java
  • 如何用idea生成javadoc

参考如下

IDEA如何生成JavaDoc

标签:Java,String,int,System,笔记,学习,println,public,out
From: https://www.cnblogs.com/tyrantblue/p/17162947.html

相关文章

  • 学习springCloud的配置之Swagger的配置
    文章来源于:https://www.bbsmax.com/A/1O5E3VP4z7/本文仅做学习记录用途SpringCloud配置中心采用数据库存储配置内容转自:SpringCloudConfig采用数据库存储配置内容【......
  • java网络编程-并发服务端
    上次的服务端一次只能接受一个客户端的连接,性能实在堪忧,我们对服务端进行了改造,每接到一个客户端的请求,就新建一个线程,让新线程跟客户端进行交互,主线程可以继续等待其他客......
  • excel使用笔记
    excel在办公中必不可少,熟练使用对工作帮助很大。文章目录​​打开多个excel文档慢​​​​选择​​​​选择整个范围​​​​选取有数据的整个范围​​​​选中到底部​​​......
  • java面试题-列举常见的异常
    面试中经常会被问到,列举几种常见异常。怎么能被这个难倒呢?下面随便列举些,以及触发例子。文章目录​​NullPointerException​​​​ArithmeticException​​​​NumberFor......
  • java使用gzip压缩和解压
    代码如下:publicclassGZipUtils{publicstaticfinalintBUFFER=1024;publicstaticfinalStringEXT=".gz";publicstaticvoidmain(String[]args)......
  • java使用commons-lang3
    pom.xml中添加<!--https://mvnrepository.com/artifact/org.apache.commons/commons-lang3--><dependency><groupId>org.apache.commons</groupId><artifactId>co......
  • java常用系统属性System.getProperties().getProperty()
    用法例子:System.out.println(System.getProperties().getProperty("user.home"));常用属性列表:属性含义java.versionJava运行时环境版本java.vendorJava运行时环境供应商jav......
  • #yyds干货盘点 react笔记之引入FontAwesome
    前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从......
  • java8 flatmap的使用
    Useruser=newUser(“[email protected]”,“1234”);user.setPosition(“Developer”);Stringposition=Optional.ofNullable(user).flatMap(u->u.getPosition()).......
  • java中输出方框(未知字符)
    这说明是空白字符,注意不是空字符串,也不是null。他是unicode中的\u0000也就是NULL.哪些场景会出现该情况?char数组中有未设定的字符,会当做空白字符来打印publicstaticvo......