欢迎来到王晨的博客

脚踏实地,不断坚持,没有终点,永远在路上!!!
扩大
缩小

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判断!
扩展运算符

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

运算符优先级的问题

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

posted on 2018-03-01 23:39  王、晨  阅读(193)  评论(0编辑  收藏  举报

导航