Java学习笔记(Day4)

安装IDEA(版本:2019.1)

安装后遇到的问题:

  1. 打开软件后报错:Unable to get current time from Google’s servers

    查找资源后发现可在Settings中的Pligins中取消勾选Android Support插件,设置后需重启。重启后确实并未报错。

  2. 汉化版IDEA中的Settings(设置)打不开

    • 注:更改前应先关闭IDEA软件
    • 需要在安装路径(lib文件夹下)找到该jar包进行更改

    更改该包

    • 打开方式选择使用压缩包打开
    • 找到messages文件夹,点开该文件夹
    • 删除UIBundle.properties,IdeBundle.properties及VcsBundle.properties这三个有关设置的文件
    • 打开IDEA即可发现问题已解决

在IDEA中实现HelloWord语句的输出

public class Hello {//自动生成
    public static void main(String[] args) {//可输入psvm快捷键,生成一个main方法
        System.out.println("Hello,word");//可输入sout快捷键,输出该语句
    }
}

点击三角(暂停)按钮,即可完成程序的运行

Java新建程序

  1. 首先新建一个空项目(Project)

  2. 再新建模块(New module)

  3. 项目结构的选择(Project Structure)

  4. 项目结构的更改

    项目结构更改

Java基本语法

  1. 文本注释:

    • 单行注释://被注释的文字

    • 多行注释:/* 被注释的文字*/

      注:要注意编码规范

  2. 文档注释:/** */ 可以实现一些功能,与JavaDoc结合使用

  3. 关键字:书P19

    • 标识符由字母、下划线、美元符号和数字组成,长度不受限制。

      public class HelloWord {
          public static void main(String[] args) {
              
              String a_5$ = "abcd";//可由字母作为标识符的开头,且可包含数字、下划线及美元符号  *"a_5$"即为变量,可赋任何值
              String _a5$d = "abcd";//可由下划线作为标识符的开头
              String $ab5d = "abcd";//可由美元符号作为标识符的开头
              
              //String 8a#cd = "abcd";//标识符不可包含"#"、"*"等除了定义外的符号
              //String 8abcd = "abcd";//数字不可作为标识符的开头
              //String class = "abcd";//标识符不能是关键字
          }
      }
      
    • 标识符不能是关键字

    • 标识符不能是true,false或null(尽管他们不是Java关键字)

    • 标识符是大小写敏感的,因大小写都可作为标识符,所以大写和小写分别代表不同的标识符

    • 标识符/类名是可以取中文名的,但一般使用单词即可

    基本数据类型

    Java:强类型语言,所有变量必须在定义后才能使用(必须要定义它的类型)。其数据类型分为基本类型及引用类型两种(除基本类型外其余都为引用类型,引用类型分为类、接口和数组)。

    注:String:字符串,它不是关键字或类

    1. 整数类型(4种)

      • byte:由内存分配一个字节,占8位。取值-2^7 ~ 2^7-1,即-128~127
      • short:由内存分配两个字节,占16位。取值-2^15 ~ 2^15-1,即-32768~32767
      • int:由内存分配四个字节,占32位。取值-2^31 ~ 2^31-1,即-2147483648~2147483647
      • long:
        • 由内存分配八个字节,占64位。取值-2^63 ~ 2^63-1,即-9223372036854775808~9223372036854775807
        • 常量后必须有后缀"L"来表示,即long num4 = -9223372036854775808L;(在写程序时要以大写字母L表示,小写字母容易混淆)
      //整形
      byte num1 = 127;
      short num2 = -32768;
      int num3 = 2147483647;
      long num4 = -9223372036854775808L;
      
    2. 浮点类型:(2种)

      • float:
        • 由内存分配四个字节,占32位。
        • float变量在float型存储数据时保留8位有效数字
        • 常量后必须有"F"或"f",即float x=1.12f;
      • double:
        • 由内存分配八个字节,占64位。
        • 常量后可以有"D"或"d",即float x=1.12f;,也可省略
    //小数:浮点型
    float num5 = 0.00006F;//默认为double类型,所以需添加后缀来表示
    float mum6 = -1.4E-45f;
    double num7 = -4.9E-324;//double类型可表示的范围更大
    double num8 = -0.00006;
    
    1. 字符类型:(1种)
      • char:用单引号括起来Unicode表中的一个字符
    //字符
    char name = 'f';//一个字母
    
    1. 逻辑类型:(1种)
      • boolean:
        • 常量:true,false
        • 变量:使用关键字boolean来声明逻辑变量,声明时也可赋初值。
    //布尔值
    boolean apple = true;
    boolean bear = false;
    

拓展:

  • 可以输入Integer(int)或 Byte去查看其功能、取值范围等。他们是Java中已经写好了的类。

  • 位是计算机内部存储的最小单位(bit),字节是计算机中数据处理的基本单位(B)。(1B=8bit;1024B=1KB)。字符是指计算机中使用的字母、数字、字和符号。

  • 整型拓展 --进制

    //整型拓展  
    int i=10;
    int m=010;//八进制 0  8421  001000=2^3(从左到右是从2^0开始加的)
    int n=0x10;//十六进制 0x(0-9,A-F)00010000=2^4
    System.out.println(i);//输出10
    System.out.println(m);//输出8
    System.out.println(n);//输出16
    
  • 浮点数拓展

    浮点数所表示的东西是有限的,它会四舍五入,它又是离散的,在使用时会有误差

    最好避免使用浮点数进行比较

    BigDecimal:数学工具类,可使用其去进行无误差运算(使用场景:例银行)。

  • 字符拓展 --强制转换

    所有的字符本质还是数字(在Unicode表中存储 从U0000到UFFFF),可强制将字符与数字之间进行转换。

    ![转义字符](D:\LearningPicture\安装IDEA后\转义字符.png)//字符拓展
    char a = 's';
    char b = '火';
    char c = '\u0061';
    Systechar b = '火';
    System.out.println(a);//输出 s
    System.out.println((int)a);//输出 115
    System.out.println(b);//输出 火
    System.out.println((int)b);//输出 28779
    System.out.println(c);//输出 a
    
  • 转义字符

//转义字符
System.out.println("for\tever");//注意是反斜杠
System.out.println("for\never");

结果如下图所示:

转义字符

  • 布尔值拓展

    注:布尔值默认为false

    //布尔值拓展
    boolean dollar = true;
    if (dollar==true){}
    if(dollar){}
    //上下两行代表意思相同,即布尔值已经赋了初值为真了,无需再写一遍。
    

基本数据类型的转换

类型按精度(通俗理解为取值范围)从低至高排列:byte short char int long float double

  1. 自动转换

当把精度低的值赋值给精度高的变量时,系统自动完成数据类型的转换。

//自动转换
int queen = 128;
double king = queen;//int低的值 ---> double高变量
System.out.println(king);//直接输出128.0
  1. 强制转换

当把精度高的值赋值给精度低的变量时,需要进行转换运算(显式类型转换运算)。

转换的格式:(类型名)要转换的值;

举例如下:

//强制转换(内存溢出)
int wife = 128;
byte husband = (byte)wife;//内存溢出  导致输出值不准确
System.out.println(wife);//输出128
System.out.println(husband);//***输出-128
//强制转换(精度问题)
System.out.println((int)-28.89);//输出-28    **精度问题
System.out.println((int)34.9);//输出34   **精度问题
//综合
char banana = 'c';
int mango = banana+1;//低-->高,自动转换
System.out.println(mango);//输出100
System.out.println((char)mango);//再将转换得到的int类型的mango转为字符型,高-->低,强制转换输出d。

注:

  1. 数据转换不包括逻辑类型(即布尔值)

  2. 不能把对象类型转换为无关联的类型

  3. 转换时可能出现内存溢出或精度问题(详见上面代码)

    • 操作比较大的数时,应注意溢出问题,去及时将其类型进行转换。

      //及时转换以免数据错误
      int money = 3_0000_0000;
      int years = 20;
      int total1 = money*years;//计算时值溢出了
      long total2 = money*years;//计算后才对数据类型转换,值仍然是错误的
      long total3 = money*((long)years);//在计算前对大的数进行类型转换,计算后也以不会溢出的数据类型存储,此时为正确步骤
      System.out.println(total1);//输出值为1705032704
      System.out.println(total2);//输出值为1705032704
      System.out.println(total3);//输出值为6000000000
      
  4. 要注意是自动转换还是强制转换

  5. 数字之间可用下划线分割,且输出时不会显示,使代码中数字更清晰直观,便于观看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值