Java入门1

Posted te9uila

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java入门1相关的知识,希望对你有一定的参考价值。

Java1

环境介绍

​ 最初sun公司用于智能家电设计(oak语言),J2SE(单机应用程序),J2ME(移动端Java应用-----安卓,已经寄了。。。),J2EE(web开发)

​ JDK(java developer kits) :Java开发者工具集

​ JRE(java runtime environment):Java运行时环境

​ JVM(java virtual machine java):Java虚拟机

语言特性

1. 高级语言
1. 编译语言(先编译后运行):编译前后缀(.java)编译后后缀(.class)
1. 可移植性强,跨平台性强:一次编译,到处执行(JVM)

配置环境变量

1. path:cmd会在path存储的目录里进行寻找( %JAVA_HOME%\\bin;%JAVA_HOME%\\jre\\bin; )
1. classpath:让java能找到编译之后的(.class文件)路径位置( .;%JAVA_HOME%/lib;%JAVA_HOME%/lib/tools.jar )
1. java_home:存储JDK目录位置( C:\\software\\jdk1.8.0_181 )
// 测试代码
public class HelloWorld                       // 文件名要和类名一致,且类名首字母需要大写(大驼峰命名)
	public static void main(String[] args)   // 主方法,所有java都会从主方法开始运行
		System.out.println("Hello World!");  // 输出字符串
	


// 运行方法(控制台)
// 先编译,生成.class文件(javac + 文件名(.java))
// 运行文件,运行的其实是生成的类(java + 类名(不加后缀))

开发规范

​ Java指令负责在.class文件中,查找相关类的数据,并执行这个类的main方法,Java文件中允许多个类存在,编译过程中,每一个类都会单独编译。

​ 开发规范要求,一个Java文件里只能有一个类,且必须于文件名一致。

命名规范

Java中变量的概念

​ Java本身是一个强类型语言,在变量声明的时候,必须定义变量的数据类型

1. 只有数字,字母,下划线,$ 可以作为变量的命名组成,并且不能以数字开头,中文也可以做变量名(最基础的编译要求)
1. 不建议使用中文,纯下划线,变量不能以下划线开头
1. 不建议使用拼音,首字母缩写,或者是拼音 + 中文
1. 建议使用英文单词进行命名
1. 变量名使用小驼峰命名,类名使用大驼峰命名
1. 见名知意
a = 1; // 错误,没有定义数据类型,编译报错
int a = 1; // 正确,通过编译
int _robot01_ = 1; // 能编译,不符合规范

数据类型(8种基本数据类型)

4种整型(byte,short,int,long)

​ byte(-2^7 ~ 2^7-1):8位二进制数,第一位符号位,后七位存数据,占一个字节(8bit)

​ short (-2^15 ~ 2^15 -1):16位二进制数,第一位符号位,后15位存数据,占两个字节(16bit)

​ int (-2^31 ~ 2^31 -1):32位二进制数,第一位符号位,后31位存数据,占四个字节(32bit)

​ long (-2^63 ~ 2^63 -1):64位二进制数,第一位符号位,后63位存数据,占八个字节(64bit)

​ 小类型转大类型:几乎没有风险,一般自动转化

​ 大类型转小类型:强制类型转换,可能发生数据溢出

// 字面量和变量的数据类型是分开的
long tmp = 2147483648; // 出现数据溢出错误,字面量默认通过int类型存储
long tmp = 2147483648L; // 不会出现数据溢出,字面量使用long类型存储

2种浮点型(float,double) + 高精度数(bigdicimal)

​ 浮点型所存储的范围要远大于整型,所有小数的字面量,默认使用 double 类型存储,浮点型的运算会很慢且会出现误差

​ float 单精度浮点型:一共有32位,占据四个字节,指数部分位8位,尾数部分位23位,符号位1位

​ float 和 int 类型:位数相同,但是float 的数据范围要远大于int 类型,但精度小于int 类型。

​ double 双精度浮点型:一共有64位,占据八个字节,指数部分11位,尾数部分52位,符号位1位

​ double 和 long 类型:差异同 float 和 int

​ 小类型转大类型时,需要注意可能出现的精度丢失问题!!!!

// 由于所有小数的字面量,默认使用 double 类型存储
float tmp = 1.1; // 报错,显示精度丢失,编译失败
// 因此在定义浮点变量时要标记字面量的数据类型
float tmp = 1.1f; // 正常编译
double tmp = 1.1d; // 正常编译

1种布尔型(boolean)

​ true / false 常用于运算表达式,没啥好写的

1种字符型(char)

​ 字符类型,只能存储一个字符(单一字符集的单一字符),只限制字符数量,不限制字符类型

// 使用char类型存储单引号(\'),使用转义字符(\\)
char tmp = \'\\\'\';
// 使用char类型存储转义字符(\\)
char tmp = \'\\\\\';
// Java底层使用 Unicode 进行字符集编码,(\\u0000 空字符)
char tmp = \'\\u0000\';

运算符

加减乘

正常运算方式

除(\\)

// 整型运算,去尾
int a = 4;
int b = 10;
 // 去尾结果为2

自增,自减(++ , --)

System.out.println(tmp++); // 先输出tmp,在进行自增操作
System.out.println(++tmp); // 先输出tmp,在进行自增操作

关系运算符

// 非,或,与
// || 和 | 连接的左右两边的运算表达式都为false,总结果为false
// && 和 & 连接的左右两边的运算表达式都为true,总结果为true

// || 短路于 && 短路或,如果符号左边的运算表达式,已经能决定整个结果,右边的表达式就会跳过
int tmp1 = 1;
int tmp2 = 2;
int tmp3 = 3;
System.out.println((tmp2 < tmp1) & (tmp3++ < tmp1++)); // 因为右边的表达式没有被跳过,所以tmp3和tmp1都会自增
System.out.println((tmp2 < tmp1) && (tmp3++ < tmp1++)); // 因为右边的表达式会被跳过,所以tmp3和tmp1不会自增

位运算符

// 按位与运算 &
System.out.println(10 & 8); // 先转换二进制,1010 & 1000 = 1000 结果为8
// 按位或运算 |
System.out.println(10 | 8); // 先转换二进制,1010 | 1000 = 1010 结果为10
// 按位异或运算 ^
System.out.println(10 ^ 8); // 先转换二进制,1010 ^ 1000 = 0010 结果为2
// 按位取反 ~
System.out.println(~10); // 先转换二进制,添加符号位,按位取反,再进行补码运算得出结果,结果为-11 
// 左移(<<)右移(>>)运算
System.out.println(2>>2); // 结果0
System.out.println(2<<2); // 结果8s

顺序结构,分支结构,循环结构

分支结构

  1. switch(必须添加break!)

    int leval = 1;
    switch(leval)
        case 1:
        	System.out.println("1");
            break;
        case 2:
            System.out.println("2");
            break;
        case 3:
            System.out.println("3");
            break;
        default:
            System.out.println("else");
    
    
  2. if else(经典分支条件判断)(不建议多层嵌套)

    基本数据类型使用 == 进行判断,但引用数据类型(string)通过 equals 方法进行比对

    String name = "robot01";
    if(robot01.name("robot01"))
        System.out.println("Welcome back! robot01! ");
    
    else if(robot01.name("robot02"))
        System.out.println("Welcome back! robot02! ");
    
    else
        System.out.println("Who are you? ");
    
    

循环结构

​ 用三种循环结构,求1~100 的和:

  1. for

    int res = 0;
    for(int i = 0; i <= 100; i++)
        res += i;
    
    System.out.println(res);
    
  2. do while

    int res = 0;
    int i=0;
    do
        res += i++;
    while(i<=100);
    System.out.println(res);
    
  3. while

    int res = 0;
    int i=0;
    while(i<=100)
        res += i++;
    
    System.out.println(res);
    
  4. break & continue

    break:退出当前循环

    continue:跳过当前层循环,进入下一层循环

    // 常用于多层循环嵌套
    loop: // 给当前循环起一个名称
    for(int i=0;i<50;i++)
        if(i%2 == 1)
            continue loop; // continue 不加名称,跳过当前循环,continue加名称,跳过指定循环
        
    
    //=============================
    int res = 0;
    loop:
    for(int i=1;i<=50;i++)
        if(i%3 == 0 && i%5 == 0 && i != 15)
            res = i;
            break loop;
        
    
    System.out.println(res);
    

以上是关于Java入门1的主要内容,如果未能解决你的问题,请参考以下文章

Java入门算法(动态规划篇1:初识动规)

Java入门算法(动态规划篇1:初识动规)

第1章Java开发入门

第1章   Java入门

第1章   Java入门

Java入门阶段总结