A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© AllIn 初级黑马   /  2018-5-13 01:02  /  860 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、Java语言语法规则和文件格式;
第一个Java程序:
/**
第一个Java程序:
控制台输出Hello world!
*/
public class Test{
    //访问修饰符 class关键词用于声明类使用 后面跟类名
   public static void main(String args[]){//程序的入口,主函数main方法;
        System.out.println(“Hello world!”);// 输出语句
   }
}
Java语言区分大小写;
public 为访问修饰符;
class关键词,用于声明类;
/**/ 多行注释;注释掉内容不被程序视为可执行内容;
//单行注释;
一条语句结束,需要通过“;” 分号结束,表示这条语句已经结束;
Java语言可以通过空格或者换行符、制表符等将其分隔开.
文件格式:一个Java程序,需要有类的声明,一般一个.java 文件中只有一个类;但是,也可以有多个class存在,此时主意:一个.java文件中,只能存在一个public 修饰的类,即:一个java文件名,应该与这个文件中public 修饰的类名相同;一个java文件中只能存在一个public 修饰的类;

2、程序的入口主函数(主方法);
在java中主函数main方法,语句格式如下:public static void main(String args[]){}
主函数只能存在于public修饰的类中;否则无法执行该主方法;如果放到其他没有被public修饰的类中,没语法错误,但是无法执行。

3、变量的声明和赋值;
变量主要用于数据的存储,需先声明再使用;
1、全局变量:声明在类中,方法外,多个方法可同时使用,也被称作“属性”、类变量、成员变量等;可以不赋初始值;全局变量可以在类型前面加访问修饰符,来控制该变量被访问的范围:
例如:
private int i=100;
pulic String str=“”;
protected short t;
2、局部变量:声明在方法中,供当前方法使用; 声明是必须赋值或者使用时必须有赋值操作;
例如:
字节型:byte b=99;
短整型:int i=11;
整型: short t=5;
长整型:long l=1898989;
字符串变量:String str=“HELLO”;
浮点型:单精度:float f=1.78;
浮点型:双精度:double d=1.7878787878;
布尔类型: boolean b=true;
字符型:char c=‘A’;

4、Java中数据类型的分类;
Java中可以分为两大类数据类型:
1、基本数据类型:
整型:
字节型(8位): byte -128到127之间的任意整数
短整型(16位): short -32768~32767之间的任意整数
整型(32位):int -2^31到2^31-1之间的任意整数
长整型(64位):long -2^63到2^63-1之间的任意整数
浮点型:
单精度(32位):float 32位单精度浮点数 根据IEEE754-1985标准
双精度(64位):double
布尔类型: boolean (true/false)
字符型(16位):char
       2、引用数据类型:引用类型的内存单元中只存放对象的地址,而对象本身存贮在内存堆中,只是简单的引用对象的地址。非基本数据类型变量,都是引用数据类型;
      (1)类class 例如:Object类 Date类
      (2)接口interface
      (3)数组array

5、基本数据类型之间的转换;
在Java中有如下几种转换方式:
1、隐式转换(亦称自动类型转换):系统默认将其转换为我们需要的数据类型;
     转换规则:从存储范围小的类型到存储范围大的类型。
     具体规则为:byte→short(char)→int→long→float→double
     也就是说 short类型的变量可以自动转换为 int 类型
     例如:short t=10,10默认为int类型;
     注意:在java中,整数默认为int类型,小数默认为double类型;
2、强制转换:在变量前加小括号,写转换类型,将其强制转换为指定类型;强制类型转换,也称显式类型转换,是指必须书写代码才能完成的类型转换。
                      该类类型转换很可能存在精度的损失,所以必须书写相应的代码,并且能够忍受该种损失时才进行该类型的转换。
     转换规则:从存储范围大的类型到存储范围小的类型。
    具体规则为:double→float→long→int→short(char)→byte
    语法格式为:(转换到的类型)需要转换的值
   例如:
         (1)byte<- short<-int<-long(这里表示赋值方向)例如:
             int i=10;short t=(short)i;
             float f=(float)10.123;
             long l=10; int i2=(int) l; short t2=(short) l;
        (2) double->float;(double赋值给float类型)
             float/double->(byte/short/int/long)例如:
             float f=(float)10.123; float f=10.123f;
             double d=10.123;int i3=(int) d;short t3=(short) d;long l2=(long) d; byte b=(byte) d;
     (3)(byte/short/int/long/float/double)->char
              char c='A';
              c=(char) i;
   特殊情况下:通过某些JavaAPI相关方法实现类型转换(不是基本数据类型之间的转换了)
   例如:
             double dRes=Double.valueOf("10.89");
6、关键字、标识符和常量用法;
1.关键字(词):是java中特有的词语,是电脑语言(这里我们指Java)里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。
   例如:
        abstract 抽象类或方法
       assert 用来查找内部程序错误
       break        跳出一个switch或循环
       byte 8位整数类型
       case switch的一个分支
       catch 捕获异常的try块子句
2.标识符
(1)由字母、数字、_下划线,或者$美元符号组成;
(2)不能以数字开头;
(3)区分大小写,长度无限制,但是要见名知意;
(4)不能是Java关键字或者保留字;
  例如:
       合法:Person 、 user_name、 _userName、$abc_123、userProject
       非法:2Username、#Test、class 、void、pulic
p.s.类、方法、属性(变量)、常量命名规则:
      类名:开头字母必须大写,后面每个单词首字母也大写,其他小写字母;
     方法名:开头字母小写、后面每个单词首字母大写;
     常量:所有字母大写;
3.常量:例如:当我们在项目中定义一个性别标识时,如男性:SEX_MEN="1" ,在我们使用时,永远不会修改这个数据,此时我们可以认为它就是常量;定义常量后,不   会被修改;(注意:之声明在类中作为全局变量使用)例如:
   public static final String SEX_MAN="0";
7、字符串的定义和使用;
Java中String声明字符串两种方法及它们的区别 :
方法1:String msg = “Hello”;
直接赋值。该方法执行后会自动将字符串“Hello”保存在字符串池中。则第二次使用直接赋值时,先检测字符串池中是否已存在“Hello”,如果存在,则将堆地址赋给引用。
Public class StringDemo{
    String msg1 = “Hello”;
    String msg2 = “Hello”;
}
执行后使得msg1与msg2的指向的地址是相同的。即内存中只有一个Hello的值。被两个引用所指向。String类采用了共享的设计模式。
方法2:String msg =new String(“Hello”);
构造方法赋值。该方法执行后,会开辟两个内存空间(耗费资源),msg会指向其中的一个,而另一个没有引用指向,就会成为垃圾内存被清理掉。使用构造方法声明的“Hello”不会自动保存到字符串池中,不能共享。
Public class StringDemo{
  String msg1 = new String(“Hello”);
  String msg2 = new String(“Hello”);
}
执行后,虽然内容一样,但是存放的地址是不一样的。他不会自动保存在字符串内存池中。
总结:综上所述,直接赋值及构造方法赋值,因保存到字符串池有差异,导致是否可以共享亦有差异,效果如下:
  String str1=“weight”;
  String str2=“weight”;
  String str3=new String (“weight”);
  System.out.println(str1==str2);//true
  System.out.println(str2==str3);//false

1 个回复

倒序浏览
能举例说明,很棒的呢。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马