java学习第一天

java学习第一天

前言:初来乍到,我是一个刚刚接触java不久的初学者,能在博客中记录我学习到的点点滴滴,我想这对我的成长将会起到非常重要的作用,如果文中出现错误,请一定提醒我。好的,那我们开始吧!

基础知识

1. 字节

字节是我们常见的计算机中最小存储单元,计算机存储任何数据,都是以字节存储的
8个bit(比特、二进制位)表示一个字节,写成1byte或1B
    8 bit = 1B

2. Java跨平台原理

编译之后会生成与平台无关的字节码文件
依赖不同平台的虚拟机(JVM)
JVM不跨平台

3. 配置环境变量

PATH变量用于指定Java开发工具的位置
“javac不是内部或者外部命令”,原因是path配置错误
从java5开始CLASSPATH默认就是当前路径,一般情况下不需要指定

4. Java基本语法

一个Java源文件里可以定义多个Java类,但其中最多只能有一个类被定义成public类。若源文件中包括了public类,源文件必须和该public类同名。
一个源文件中包含N个Java类时,成功编译后会生成N份字节码文件,即每个类都会生成一份单独的class文件,且字节码文件名和其对应的类名相同。
若一个类必须运行,则必须拥有main方法,因为main方法是程序的入口.

5. 编程建议

一个Java源文件只定义一个类,不同的类使用不同的源文件定义;
将每个源文件中单独定义的类都定义成public的;
保持Java源文件的主文件名与源文件中的类名一致;

常量和字面量

1. 常量分类:

字面量常量:常见的
定义的final变量
public class ConstDemo{
    public static void main(String[] args){
        System.out.println("111");//必须使用双引号
        System.out.println(111);//报错
    }
}

2. 引入变量

public class StepInVarDemo{
    public static void main(String[] args){
        int x = 11;
        int y = 12;
        System.out.println(x + y);
        x = 10;//可以被重复使用
        y = 1;
        System.out.println(x + y);
    }
}

3. 变量操作

定义
赋值(初始化)
在声明变量的时候,,并做初始化

4. 变量的分类:

变量根据定义的位置不同,分为两大类
    成员变量(字段)
    局部变量
public class VarDemo{
    int age = 17;//成员作用域、字段,直接定义在类中{}中的变量(方法外)
    public static void main(String[] args){
    
        int age = 18;//局部作用域,定义在方法中的变量
    }
}
public class VarDemo{
    static int age = 17;//现在定义的成员变量都是用static修饰
    public static void main(String[] args){
    
        System.out.println(age);
    }
}

5. 变量的作用域

public class VarDemo2{
    public static void main(String[] args){
        System.out.println(a);
        int a = 11;//错误:找不到符号
    }
}

6. 变量的使用规则

变量必须先声明,并且初始化后才能使用
同一作用域内变量名不能重复定义

数据类型

  • javac的优化
    byte,short,char直接赋值时,只要不超过范围,javac有一个隐式强转

    byte,short,char,如果两个常量相加,不超过范围即可
    如果运算时有变量参与,那么首先要提升int,再手动强转

    1. 数据类型

    boolean类型:

    该类型只能是true或false,表示真或假
    不可以使用0或非0的整数来代替false和true
    任何数相互比较都为true

long类型:
java语言的整型常量默认是int,声明long类型变量后面建议使用大写的L
float类型:
一个浮点数的字面量默认是double类型,声明float类型在常量后必须加上f或F
public class  DecimalDemo{
    public static void main(String[] args){
        float a = 3.1F;//必须加上
        System.out.println(a);
    }
}
java里只有浮点数的变量才可以接受科学计数法
float和double都不能精确的表示小数,BigDecimal类型可以表示任意精度的数据
char类型
占两个字节,可以表示一个汉字
两种表示形式:
public class CharDemo{
    public static void main(String[] args){
        char a = 'A';//直接使用单个字符
        char A = 65;//ASCll
        a = 97;
        System.out.println(a);
    }
}
引用类型默认初始值都是null

String
是一个类,表示字符串,N个字符连接在一起,必须使用双引号
字符串拼接:字符串和任意数据类型相连接,结果都是字符串类型

2. 基本数据类型转换

在8大基本数据类型中,boolean不参与转换,不是数值类型
自动类型转换,隐式类型转换(把小的转换为大的)
public class TypeConvertDemo
{
    public static void main(String[] args){
        byte b1 = 5;//我们一般的直接把byte,short,char直接赋给int类型
        int i1 = b1;
        double d1 = i1;
        System.out.println(d1);
    }
}
强制类型转换,显式类型转换(把大的转小)
public class TypeConvertDemo2
{
    public static void main(String[] args){
        float f1 = (float)3.14;
        System.out.println(f1);
        byte s1 = 125;//整数常量,编译器发现是在该范围内,底层偷偷转换了
        System.out.println(s1);
    }
}

表达式类型中的自动提升
所有的byte、short、char类型自动提升为int类型
整个表达式的最终结果类型被提升到表达式中类型最高的类型

public class TypeConvertDemo3 
{
    public static void main(String[] args){
        char a = 'A' + 1;
        System.out.println(a);
        System.out.println('A' + 1);
        byte b1 = 25;
        b1 = b1 + 3;//int b2 = b1 + 3   b1 += 3 自带隐式类型转换
        System.out.println(b1);//错误: 不兼容的类型: 从int转换到byte可能会有损失
    }
}

3. 算术运算符

public class ArithmeticOperatorsDemo
{
    public static void main(String[] args){
        char a = 'A' + 'B';
        System.out.println(a);
        System.out.println('A' + 'B');
        System.out.println("aaaaa" + "bbbbb");
        System.out.println(9876 / 1000 * 1000);//整数在使用除号操作时,得到的结果仍为整数(小数部分忽略)
        System.out.println(100 / 0);//  / by zero   异常会导致程序中断
        System.out.println(100.0 / 0);//Infinity
        System.out.println(0.0 / 0.0);//NaN
    }
}

无穷大和NaN都属于double类型,但是所有正无穷大都是相等的,所有负无穷大也是相等的

4. ++&&–的问题

public class ArithmeticOperatorsDemo2
{
    public static void main(String[] args){
        int a1 = 5;
        int b1 = ++a1;//表示a变量自身先加1,再运算
        System.out.println(a1 + "," + b1);
        int a2 = 5;
        int b2 = a2++;//表示a变量自身先加1,把递增1之前的原始值拿去做运算
        System.out.println(a2 + "," + b2);
    }
}

不管是a++还是++a,其结果a都加1,影响的是赋值的另一边

练习:

public class ArithmeticOperatorsDemo3
{
    public static void main(String[] args){
        int i = 5;
        i++;
        System.out.println(i);
        ++i;
        System.out.println(i);
        System.out.println("----------------------");
        int a = ++i;
        System.out.println(a);
        System.out.println(i);
        int b = i++;
        System.out.println(b);
        System.out.println(i);
    }
}

https://www.cnblogs.com/see-T2/p/12251025.html

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论