zoukankan      html  css  js  c++  java
  • java基础回炉重造第一天

    JDK、JRE、JVM的区别

    • JDK
      java开发工具包
    • JRE
      java运行时环境
    • JVM
      java虚拟机

    包含关系
    JDK > JRE > JVM

    虚拟机实现跨平台功能

    HelloWord

    1. 代码编写,编写代码并保存在磁盘上,保存为:xxx.java
    2. 编译阶段(编译器创建 class 字节码文件),进入java文件所在目录,执行命令:javac xxx.java
    3. 执行阶段,进入java文件所在目录,执行命令:java xxx

    HelloWord深化

    • java对大小写敏感
    • main方法是 java 应用程序的入口方法
    • 在java中,用花括号划分程序的各个部分,任何方法的代码都必须以“{”开始,以“}”结束,由于编译器忽略空格,所以花括号风格不受限制。
    • java一个语句可以跨多行,每个语句必须以分号结束,回车不是语句的结束标志
    • 一个源文件可以有多个 class,一个源文件中至多只能有一个public的类声明,其他类的个数不限,如果源文件中包含一个public类,源文件名必须和它定义的public的类名相同,且以“java”为扩展名。
    编程风格
    • 注意缩进
    • 成对编程
    • 见名知意
    注释

    注释不能嵌套

     //  单行注释
    
    /*
    多行
    注释
    */
    

    标识符unicode和GBK_各种字符串的关系

    标识符
    • 作用:
      给变量、类和方法命名。

    • java标识符有如下命名规则:

      1. 标识符必须以字母、下划线、美元符号开头。
      2. 标识符其他部分可以是字母、下划线“_”、美元符“$”和数字的任意组合。
      3. Java标识符大小写敏感,且长度无限制。
      4. 不可以是Java的关键字。
    • 注意:
      Java 不采用通常语言使用的ASCII字符集,而是采用unicode这样的标准的国际字符集。
      因此,这里的字母含义:英文、汉字等等。(不建议大家使用汉字来定义标识符!)

    • 不合法的标识符:

    int 1a = 3  //不能用数字开头
    
    int a# = 3  //不能傲包含#这样的特殊字符
    
    int int = 3 //不能使用关键字
    
    • Java关键字是Java语言保留供内部使用的,如 class 用于定义类。 关键字也可以用成为保留字,他们的意思是一样的。不用刻意去背。

    八种基本数据类型

    java是一种强类型语言,每个变量都必须声明其类型

    • 数据类型

      • 基本数据类型
        • 数值类型
          • 整数类型(byte(1字节),short(2字节),int(integer)(4字节),long(8字节))
          • 浮点类型(float(4字节),double(8字节))
        • 字符型(char)
        • 布尔型(boolean)
      • 引用数据类型
        • 类(class)
        • 接口(interface)
        • 数组
      浮点数和浮点数的误差问题
    • float 类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足。

    • double 表示这种类型的数值精度是 float 类型的2倍,又被称作双精度,绝大部分应用程序都采用 double类型。

    • 浮点数值默认为 double 类型。要将其变为 float 类型,需要在后面增加 F/f 。如:3.14F

    • 最好避免比较中使用浮点数。

    • 浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生摄入误差的精确数字计算,需要使用 BigDecimal类。

      char 字符串和 boolean

      char

      • 单引号用来表示字符常量。
      • char 类型用来表示在 Unicode 编码表中的字符。
      • char 是在 0~65535 范围,运行时直接当作整数来运行。
      • 可以把 0~65535 之间的整数直接转型为char。
      boolean 类型(一位,不是一个字节)
      • boolean 类型有两个值,true 和 false
      • boolean 类型用来判断逻辑条件,一半用于程序流程控制
    自动和强制类型转换
    自动类型转换
    • 容量小的数据类型可以自动转换为容量大的数据类型
    int i= 3;
    double d = i;
    float f = i;
    double d2 = f;
    
    • 特例
      可以将整型常量直接赋值给 byte ,short,char,等类型变量,而不需要进行强制类型转换,只要不超出其表示数范围
    Short b = 12;   //合法
    short b = 1234567;      //不合法
    
    强制类型转化
    • 强制类型转换,又被称为造型,用于显示的转换一个值得类型。在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。

    • 当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同的值。

    表达式中的类型提升问题
    int a =3;
    long b =4;
    int c = (int)(a + b);      //做所有的二元运算符(+-*%),都会有类型提升的问题
    
    基本类型转化时常见的错误和问题
    • 操作比较大的数时,需要留意是否溢出,尤其时整数操作时
    int money = 100000000;  //10亿
    int years = 20;
    int total = money * years;      //返回的是负数
    
    long total1 = money * years;        //返回的任然是负数,默认为 int,因此结果会转成 int 值,再转成 long。但是已经发生了数据丢失。
    
    long total2 = (long)money * year;       //先将一个因子变成 long ,整个表达式发生提升。全部用 long 来计算。
    
    
    L 和 l 的问题:
    • 不要命名名字为 l 的变量
    • long 类型是用大写 L 不要用小写

    JDK7新特性

    二进制整数
    下划线分隔符

    变量

    • Java是一种强类型语言,每个变量都必须声明其类型
    • Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
    • 变量在使用前必须对其声明,只有在变量声明以后,才能为其分配相应长度的存储单元,声明格式为:
    type varName = [=value] [{,varName[=value]}]    ;
    
    • 注意事项:

      • 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
      • 变量名必须是合法的标识符
    • 变量声明举例:

    double salary ;     boolean done;
    
    long eatthPopulation ;      int age ;
    
    • 可以在一行中声明多个变量:
    int i , j ;
    

    不提倡这种风格,注意声明每一个变量可以提升程序的可读性。

    • 可以将变量的声明和初始化放在同一行中,例如:
    int age = 18;   float e = 2.718281828f ;
    
    实例变量(成员变量)
    • 方法外部、类的内部定义的变量
      如果不自行初始化,他会自动初始化成该类型的默认初始值(数值型变量初始化成 0 或 0.0,字符型变量的初始化值是16位的0,布尔型默认是false)
    局部变量:方法或语句块内部定义的变量
    • 在使用前必须先声明和初始化(赋初始值)
    public class Test2 {
    int t;      //实例变量,成员变量,属性
    public static void main(String[] args) {
    //局部变量
    int a;
    a = 5;
    int x, y, z;
    }}
    
    Final 常量
    • 只能被初始化一次
    • 常量大写
    命名规范
    • 所有变量、方法、类名:见名知意
    • 变量、方法名:
      1. 首字母小写和驼峰原则
    • 常量:
      1. 大写字母和下划线
    • 类名:
      1. 首字母大写和驼峰原则

    基本运算符

    Java语言支持如下运算符:

    名称表达方式
    算术运算符 +,-,*,/,%,++,--
    赋值运算符 =
    关系运算符 >,<,>=,<=,==,!= instanceof
    逻辑运算符 &&,||,!
    位运算符 &,|,^,~,>>,<<,>>(只做了解!!!)
    条件运算符 ? :
    扩展赋值运算符 +=,-=,*=,/=
    算术运算符
    • 二元运算符类型提升:
      整数运算:
      * 如果两个操作数有一个为 Long ,则结果也为 long
      * 没有 long 时,结果为int, 即使操作数全为 shot,byte,结果也为 int

    • 浮点运算:

      • 如果两个操作数有一个为double,则结果为 double。
      • 只有两个操作数都是float,则结果才为 float。
    • 一元运算符(++,--)

    int a = 3;
    int b =a++;      //执行完后,b=3。先给b赋值,再自增
    int c =++a;     //执行完后,c=5。先自增,再给b赋值
    
    布尔逻辑表达符
    • 逻辑与:&&
    • 逻辑或:||
    • 逻辑非:!
    • 逻辑与和逻辑或采用**短路的方式。**从左到右计算,如果确定值则不会再计算下去。
    位运算符
    • ~ --取反
    • & --按位与
    • | --按位或
    • ^ --按位异或
    • << :左移运算符
    • >>:右移运算符
    • 右移一位相当于除2取商
    • 左移一位相当于乘2
    三目条件运算符

    x ? y : z

    • 其中 x 为 boolean 类型,先计算 x 的值,若为 true ,则整个三木运算符的结果为表法式 y 的值,否则真个运算结果为表达式 z 的值。
    • 经常用来代替简单的 if-else判断!
    扩展运算符

    字符串相连,加号两边只要有一个为字符串,则整个结果为字符串

    运算符优先级的问题

    表达式里面优先使用小括号来组织!!!

  • 相关阅读:
    服务器安装软件
    SQL server
    改变下blog思维
    react 父子组件互相通信
    linux下,文件的权限和数字对应关系详解
    Linux 下非root用户使用docker
    Two 观察者 observer pattern
    one 策略模式 strategy
    ssm maven spring AOP读写分离
    Unknown column in 'where clause'
  • 原文地址:https://www.cnblogs.com/w13248223001/p/10393300.html
Copyright © 2011-2022 走看看