JAVA学习笔记01


Hello,World!

public class Hello {
   public static void main(String[] args) {
       System.out.println("Hello,Word!");
  }
}
?

注意不要使用中文符号,主函数语句main+回车,输出语句sout+回车。

注释

书写注释非常重要!!!

单行注释

//某一行

多行注释

/*

第一行

....

很多行

*/

标识符和关键字

关键字不能被用来起名,如public class class这是错误的。

类名,变量名,方法名都成为标识符。

标识符只能以字母、$、_ 开头。

标识符对大小写十分敏感,Man和man不一样。

标识符命名尽量不使用拼音。

数据类型

基本类型

public class Demo2 {
   public static void main(String[] args) {
       //整型
       int num1 = 10;//最常用
       byte num2 = 20;
       short num3 = 132;
       long num4 = 12123211546L;//long类型后会加一个L
?
       //浮点型
       float num5 = 11.2F;//float类型会在后面加一个F
       double num6 = 12.54;
?
       //字符型
       char a = '我';//只能是一个字符
?
       //字符串,String不是关键字
       String name = "张三";
?
       //布尔型 是非
       boolean flag = true;
       //boolean flag = false;
  }
}

引用数据类型

类、接口、数组

数据类型拓展

尽量避免浮点数之间的比较!!!

浮点数显示是有限的,大约,近似于,四舍五入,接近但不等于。

银行业务不适用浮点型,会使用Java自带的一个数学工具类BigDecimal。

public class Demo3 {
   public static void main(String[] args) {
       float d = 0.1f;
       double b = 1.0/10;
       System.out.println(d==b);//false
?
       float a = 1513543468768451434f;
       double c = a+1;
       System.out.println(a==c);//true
  }
}
?

转义字符

\t输出一个空格 \n换行

类型转化

(类型)变量名

public class Demo4 {
   public static void main(String[] args) {
       double i = 5.2547;
       int d = (int)i;//强制转换为int型
       System.out.println(i);
       System.out.println(d);
  }
}
?

注意

  1. 不能对布尔类型进行强制转换

  2. 不能把对象类型转换为不相干的类型

  3. 从高容量转换到低容量的时候,强制转换

  4. 转换的时候可能存在内存溢出或者精度问题

ASCII转换

public class Demo4 {
   public static void main(String[] args) {
       char a = 'a';
       int c = a+1;
       System.out.println(c);
       System.out.println((char)c);
  }
}
/*
98
b
*/

数值溢出问题

public class Demo5 {
   public static void main(String[] args) {
       //操作比较大的数的时候,注意溢出问题
       //JDK7新特性,数字之间可以用下划线分割
       int money = 10_0000_0000;
       int years = 20;
       int total = money * years; //-1474836480 ,计算的时候溢出了
       long total2 = money * years;//默认是int,转换之前已经存在问题了?
       long total3 = money * ((long) years);// 先把一个数转换为Long
       System.out.println(total3);//20000000000
  }
}
?

先将一个数值转化为long类型再进行计算。

变量

  • 变量就是可以变化的量。

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

  • java变量是程序中最基本的存储单元,其要素包括变量名,变量类型,作用域。

public class Demo6 {
   //类变量 static
   static double Salary = 2000;
?
   //实例变量:从属于对象;如果不自行初始化,这个类型的默认值0 0.0
   //布尔值:默认是false
   //除了基本类型,其余的默认值都是null;
   String name;
   int age;
?
    //main方法
   public static void main(String[] args) {
       //局部变量
       int i = 10;//必须声明和初始化值
       System.out.println(i);
       System.out.println(Salary);//类变量可以在方法中输出
  }
   public void sum(){
?
  }
}
?

常量

final 常量类型 常量名=值(常量名一般使用大写字符)

static final double PI = 3.14;

变量的命名规范

  • 所有变量、方法、类名:见名知意

  • 类成员变量:首字母小写和驼峰原则: monthSalary,除了第一个单词外后面的单词首字母大写

  • 局部变量:首字母小写和驼峰原则

  • 常量:大写字母和下划线:MAX_VALUE

  • 类名:首字母大写和驼峰原则: Man,GoodMan

  • 方法名:首字母小写和驼峰原则: run(), runRun()

逻辑运算符

package base;
?
public class Demo7 {
   public static void main ( String[]args ) {
         //与(and)或(or)非(取反)
   boolean a = true;
   boolean b = false;
   System.out.println("a && b: "+(b&&a));//逻辑与运算:两个变量都为真,结果才true
   System.out.println("a || b: "+(a||b));//逻辑或运算:两个变量有一个为真,则结果才为true
   System.out.println("! (a && b) :"+!(a&&b));//如果是真,则变为假,如果是假则变为真
//短路运算
   int c = 5;
   boolean d = ( c<4)&&( c++<4);
   System.out. println(d);
   System.out.println(c);//结果c=5,c++没有运行
}
?
}
?

在与运算中,A&&B,当A为假时,B不被执行。

位运算

package base;
?
public class Demo8 {
   public static void main(String[] args) {
       /*
       A = 0011 1100
       B = 0000 1101
       A&B = 0000 1100   其中一个是0结果为0,两个都为1,结果为1
       A/B = 0011 1101   都为0结果为0,有一个1结果为1
       A^B = 0011 0001   AB依次进行比较一样的话为0,不一样为1
       ~B = 1111 0010   1,0互换
       效率极高!!!!
       面试题:如何最快计算2*8?
       2*8 = 16   2*2*2*2<<*2
?
0000 0000   0
0000 0001   1
0000 0010   2
0000 0011   3
0000 0100   4
0000 1000   8
0001 0000   16
*/
       System. out.println(2<<3);//二进制表示2的1,向左移动三个位次
?
  }
}
?

位运算<<乘以二,>>除以二。

public static void main(String[] args) {
       int a = 10;
       int b = 20;
       //字符串连接符+ String
       System.out.println(""+a+b);//结果为1020
       System.out.println(a+b+"");//结果为30
       //String类型在前,则会将结果转化为String类型,String类型在后则不影响结果
  }

三元运算符

public static void main(String[] args) {
       //x ? y : z
       //如果x==true,则结果为y,否则结果为z
       int score = 50;
       String type = score < 60 ? "不及格" : "及格";
       System.out.println(type);
?
  }

文档注释

public class Demo10 {
   /**
    * @version 1.8
    * @author 30237
    * @param args
    * @throws Exception
    */
   public static void main(String[] args) throws Exception{
?
  }
}

/**+回车