记事本编写我的第一个Java程序
首先,我们得明白Java是怎么一步步编译到JVM运行的。
示例:我们首先用txt文本编写一个空白类。之后将其后缀改为<.java>
class HelloChaoxi{
}
通过dos命令窗口进入到项目文件存储位置,使用命令进行编译。讲Java文件编译为<.class>的字节码文件。
这里值得注意的有几点:
(1)理论上Java文件的名字应该与主类名字一致,这样编译后的.class文件,你才能明白到底是谁编译生成的。(不过初学的时候,没注意也没关系。)
(2)类名的命名规则,首字母大写并新单词的首字母也大写的规则,交替命名。做到“见名知意”。
(3)windows环境下,不区分大小写,指的是,我们在编译Java文件的时候,
Javac Helloworld.java 和 Javac helloworld.java 是一致的。(这是windows的原因)
注意点:有些同学根据网上的环境变量配置,可能配置了JDK的同时,也配置了CLASSPATH等环境变量。其实,CLASSPATH的配置是没有必要的。
配置CLASSPATH路径,相当于把执行class文件的路径默认的定死了。一旦改变了存储位置,就有可能让Java运行文件的时候报找不到主类的情况。
如果,Java 主类名 无法运行,其他的其实是正确的时候,可能是在环境变量中配置了classpath的原因,其实这个步骤完全没有必要。原理与path是一样的。
Java中的注释
首先注意:注解和注释是不一样的!!!
//:单行注释 (对所写的程度解释说明,增强可读性,方便自己,方便别人)
(调试写的程序)
/*
.......
*/ :多行注释
注意:多行注释不可以嵌套使用
请注意,Javadoc所解析的类,通常在前面加上一个public
比如: public class Helloworld{
}
java的API文档
相当于我们学习Java时候的字典,查询其一些类的方法。
注意:
1、在一个Java源文件中,可以声明多个class,但是,只能最多有一个类声明为public,且该类名与源文件名同名
2、程序得入口是main()方法,格式是固定的
例如:public class person{
public static void mian(String[] args){ //args=arguments 这里的args是可以更改的 ,中括号[]位置可以放在args后面也可以
System.out.println("helllo world ");
}
}
3、输出语句: System.out.println() //先输出数据后换行
System.out.print() //换行与不换行的区别
4、每一行执行语句都以“;”结束
5、编译的过程,一个源文件里面会有多个类,编译之后每个类都会生成一个类文件,也就是多个字节码文件,但是只能运行含有mian() 的 字节码文件
6、IDE(集成开发环境),eclipse(IBM公司开发的),myeclipse(Genuitec公司开发),两者的主要差别是,插件集成度和插件安装的问题.
java语言中的关键词,保留字,标识符
命名规范:主要是规范代码,也不是说编译不通过,可以通过。只是说养成一个好的代码习惯。
命名的例子:(编译可通过)
总结:
Java中使用的是Unicode字符集,所以变量名是中文也是可以的,但是,不要这么做。
例如 int 学号=110; 是正确的。
java中的变量
俗话说得好,如果连一个编程语言的变量都没学懂,那就不可能掌握这门语言了。
赋值语法:
变量类型 变量名 = 变量值 ; <-----> 变量类型 变量名 ;
变量名 = 变量值 ;
变量必须先声明,后赋值,然后才可以被调用,使用。
变量都定义在其作用域内,才有效。
注意事项:
1、尽管float单精度只占四个字节,但是他表示得范围比long还要大。
2、浮点型,表示带有小数点的数值。
3 、long型数值,后面需要跟加“l 或者 L”,float后面跟加 “f 或者 F”
4、char :声明一个字符,转义字符(其实就是加‘\’把字符的意思改变,从而实现相应的功能)
5、一般解析中文,需要使用GBK(ANSI)的编码格式,写入和读取的编码格式要一致才行
6、布尔变量只能取两个值,true 或者 false
7、当想打印一些特殊的字符的时候,由于本身可能是转义字符,则我们在它的前面加上\即可,例如打印转义字符“\n”,可以写作:System.out.println("\\n") ----->输出 \n
自动类型提升和强制类型转换
==自动类型提升==:当两个类型不一致的数值做运算的时候,考虑到输出范围的问题,会自动转换成大的范围的数据类型,当然你自己可以设定更大范围的类型作为输出
例如,byte 和 int 类型的数值相加,自己不加限制,则输出类型默认为 int ,但是自己可以将输出设定为 long 或者 float 类型都可以
Byte 、char、 short -->int -->long -->float -->double
Char 类型和其他的类型可以进行运算,比如,char和int进行计算,结果类型默认为int,因为char类型只占2个字节
Char 和 short类型做运算,char 和 byte 做运算,short 和 byte 做运算,结果默认为 int 类型,也就是 byte 和 char 和short ,不管怎么组合,都是int类型
==强制类型转换==:自动类型提升运算的逆运算。(也就是我就想把结果转换成范围小的类型)
例如,double d1=12.3; ,int i1=(int)d1; 在括号里注明强转的类型,12.99--》12 ,截断操作,非四舍五入,可能导致精度损失
有个有意思的注意例子是,int i2=128;byte b=(byte)i2;强制转换后,b结果为-128 (用底层二进制来解释)
注意:
1、long l=12312;编译并不会报错,这是因为系统认为你是把一个int类型的数值强制转换成long,
但是如果,long l=1234566678999778899;就会报错,因为数本身默认是int型,但是超过了int的范围,就会报错,这时候就必须在最后加上‘L’
2、float f1=12.3;一定会报错,因为不加f默认为double类型,大范围不能向小范围赋值,所以必须加上‘f’
3、整形常量,默认类型为int类型,浮点型常量,默认类型为double类型
4、byte b=12; byte b1=b+1; 会报错,因为加上1(整型常量,默认类型为int),会认为强制转换成int类型,所以违反了大范围向小范围赋值,所以会报错。
自己的一些实践:
注意:String不能通过一般的方法转换成其余8种类型,需要通过另一个类方法进行转换