java编程起步
public class Hello {
public static void main(String args[]) {
System.out.println("Hello World !") ;
}
}
对源程序进行编译 javac Hello.java
public class 类名称{} 类名称必须与文件名称保持一致,一个*.java 文件中只允许有一个public class
class 类名称{} 类名称可以与文件名称不一致,但是编译后的*.class 名称是class定义的类名称,要求解析的时候解析的是*.class 文件,一个*.java文件中可以又多个class定义
java 类名称的首字母必须大写
java 的主方法
[public] class 类名称{
public static void main(String args[]){
//程序的代码由此开始执行
}
}
PATH: 是操作系统提供的路径设置,定义可执行程序的路径
CLASSPATH: 是由JRE提供的,用于定义java程序解释时类加载路径,默认设置的为当前所在路径加载,可以通过“CLASSPATH=路径” 的命令形式来进行定义;
关系: JVM --- CLASSPATH定义的路径 --- 加载字节码文件。
java注释
单行注释: //注释内容
多行注释: /* .... */
文档注释: /** ... */ 一般通过工具进行加注释
标识符与关键字
java 中的关键字是不需要背的,
JDK1.4 出现有assert 关键字,用于异常处理
JDK1.5的时候出现enum关键字,用于枚举定义上
未使用到的关键字: goto、const
java数据类型
基本数据类型
描述的是一些具体的数字单元
数值型:
整型:byte、short、int、long
浮点型:float、double
布尔型:boolean 默认值 false
字符型:char
引用数据类型
牵扯到内存关系的使用
数组、类、接口 默认值 null
参考原则
如果要描述数字首选的一定是int(整数)、double(小数)
如果要进行数据传输或者进行文字编码转换使用byte类型(二进制处理操作)
处理中文的时候最方便的操作使用的是字符char 来完成(可选概念)
描述内存或文件大小、描述表的主键列(自动增长) 可以使用long
int类型
public class JavaDemo{
public static void main(String args[]){
int x = 10;
System.out.println(x*x);
int max = Integer.MAX_VALUE;//获取 int 的最大值
int min = Integer.MIN_VALUE; // 获取 int 的最小值
System.out.println(max); //2147483647
System.out.println(min); //-2147483648
System.out.println(max + 1L); //-2147483648
System.out.println((long)min - 1); //2147483647
}
}
数字超出了最大保存范围,产生了循环问题, 这样的问题在java中被称为数据溢出,如果超出数据溢出,可以继续扩大使用范围long
程序支持有数据转化处理,但是如果不是必须的情况下不建议使用强制类型转化
浮点型数据
所有数据类型进行自动类型转化时都是小类型到大类型转化。
字符型
在java 中使用单引号''定义的内容就是一个字符。
public class JavaDemo{
public static void main(String args[]){
char c = 'I';
int num = c;
num = num - 32;
System.out.println((char)c);
}
}
字符可以和int进行相互转化
"大写字母的范围": 'A'(65) ~ 'Z'(90);
"小写字母的范围" : 'a'(97) ~ 'z'(122);
"数字范围": '0'(48) ~ '9'(57);
通过编码范围可以发现大小写字母之间差32个数字的长度。
Java 中的char 主要是用于中文处理,java 中的char进行中文的保存, 是因为java使用的是Unicode编码,主要特点是可以包含任意的文字内容,使得程序开发更加的简单。
布尔类型
用于进行逻辑判断 boolean
String 字符串
在任何语言里里面都没提供所谓字符串的数据类型,但是从实际的使用上来讲各个编程语言为了方便程序的开发,都会提供有字符串的相应描述,在java里面使用的是String作为字符串的定义。
由于String类的存在比较特殊,可以像普通变量那样采用直接赋值的方式进行字符串的定义,""表示字符串。
'+'号可以进行字符串的链接。
转义字符
运算符
所有的程序开发都是一种数字的处理游戏,那么对于数字的处理一定会有所谓的操作模式,而这些操作模式就称为运算符。
数学运算符
在Java中进行数学运算,谨记一定要简单
关系运算符
> < >= <= == !=
三目运算符
public class JavaDemo{
public static void main(String args[]){
int x = 10;
int y = 20;
int max = x > y ? x : y;
}
}
三目运算符也可以进行嵌套操作,但是程序的可读性很差。
位运算
与(&),或(|) 异或(^) 非(!)
左移(<>)
逻辑运算 && ||
分支与循环
分支结构
public class JavaDemo{
public static void main(String args[]){
//if分支结构主要是针对关系表达式进行判断处理的分支操作
//if(布尔表达式)
//{条件满足时执行}
//else if(){}
//else if(){}
//else {}
int age = 18;
if(age >= 18 && age <= 20){
System.out.println("you are so young!");
}
System.out.println("Love your life");
}
}
多条件判断是,记住一定要写else 语句
switch
while语句
public class JavaDemo{
public static void main(String args[]){
int sum = 0;
int num = 1;
while(num <= 100){
sum += num;
num ++;
}
do{
sum += num;
num ++;
}while(num <= 100);
System.out.println(sum);
}
}
实际开发过程中使用do...while的概率为1%
for循环
public class JavaDemo{
public static void main(String args[]){
int sum = 0;
for(int num = 1; num <= 100; num++)
{
sum +=
}
System.out.println(sum);
}
}
明确循环次数的情况下优先选择for循环
在不知道循环次数但是知道循环结束条件的情况下使用while循环;
循环控制
continue break;
public class JavaDemo{
public static void main(String args[]){
for(int i = 1; i <= 9; i++){
for(int j = 1; j <= i; j++)
{
System.out.print(j + "*" + i + "=" + (j*i) + "\t");
}
System.out.pirntln();
}
}
}
方法的定义
在程序之中很多情况下是有可能需要重复调用的代码,
方法在主类中定义,并且由主方法进行直接调用
public static 返回值类型 方法名称([参数列表]){
return[返回值];
}
方法命名规则驼峰式 printMessage
方法的本质就是方便使用者进行重复调用
如果方法的返回值类型为void,那么可以利用return来结束调用
public class JavaDemo{
public static void main(String args[]){
}
public static void sale(int money){
if(money < 0)
{
return ;
}
for(int x = 1; x <= money; x++){
System.out.println("I love you SUSU");
}
}
}
方法重载
当方法的名称相同,参数的类型或个数不同的时候就称为方法的重载, 方法的重载与返回值类型没有任何关系。
public class JavaDemo{
public static void main(String args[]){
}
public static int sale(int a, int b){
return a + b;
}
public static int sale(int a, int b, int c){
return a + b + c;
}
public static double sale(double a, double b){
return a + b;
}
}
递归操作虽然可以简化调用,但在实际的开发中很少使用递归, 大部分只考虑一些简单的处理逻辑,递归处理不当,还可能造成内存溢出。