JAVA学习笔记(未完结)
JAVA学习笔记
java环境配置指路大佬文章:李培冠的博客
非常详细的JDK+Tomcat的安装教程,跟着一步步做就对了,但我也安了很久,中间还是会因为一些不明原因的问题安不上,csdn基本能解决99%的问题
学习参考资源:
- 菜鸟教程JAVA篇
- 《Java程序设计之网络编程(第3版)》杨瑞龙 李芝兴 主编
- HOW2J的JAVA教程
我是c语言起手的学习者,仅提供学习了基本c语言操作之后的学习视角。
java基本语法
详细基本语法请参考菜鸟教程以及教科书。
个人归纳要点:
-
java是强类型的语言,类、对象、方法都有类型
-
帮大家重点区分几个概念(以下内容在菜鸟教程里都有,我摘抄出来的)
-
修饰符:在定义类、方法、变量时都会出现,会且只会定义这三个
-
访问修饰符
-
default(即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
-
private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
-
public : 对所有类可见。使用对象:类、接口、变量、方法
-
protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
附上表格一张,说明了访问权限
修饰符 当前类 同一包内 子孙类(同一包) 子孙类(不同包) 其他包 public
Y Y Y Y Y protected
Y Y Y Y/N(说明) N default
Y Y Y N N private
Y N N N N
-
-
非访问修饰符
- static:修饰类方法、类变量
- final:修饰类、方法、变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
- abstract:用来创建抽象类和抽象方法。
- synchronized和volatile:主要用于线程的编程。
-
-
-
面向过程的c在书写时,基本上都是一两千行的代码都写在同一个.cpp文件中。面向对象的java则基本都封装在不同的.java文件里,主程序可直接在同一个包的范围里调用其他.java文件中的类。
如(该例由菜鸟教程提供,在教程中有详细说明):
以下代码保存在名称为Employee.java的文件中
package test1; public class Employee{ String name; int age; String designation; double salary; // Employee 类的构造器 public Employee(String name){ this.name = name; } // 设置age的值 public void empAge(int empAge){ age = empAge; } /* 设置designation的值*/ public void empDesignation(String empDesig){ designation = empDesig; } /* 设置salary的值*/ public void empSalary(double empSalary){ salary = empSalary; } /* 打印信息 */ public void printEmployee(){ System.out.println("名字:"+ name ); System.out.println("年龄:" + age ); System.out.println("职位:" + designation ); System.out.println("薪水:" + salary); } }
以下代码保存在EmpoyeeTest.java文件中
package test1; public class EmployeeTest{ public static void main(String[] args){ /* 使用构造器创建两个对象 */ Employee empOne = new Employee("RUNOOB1"); Employee empTwo = new Employee("RUNOOB2"); // 调用这两个对象的成员方法 empOne.empAge(26); empOne.empDesignation("高级程序员"); empOne.empSalary(1000); empOne.printEmployee(); empTwo.empAge(21); empTwo.empDesignation("菜鸟程序员"); empTwo.empSalary(500); empTwo.printEmployee(); } }
运行主函数,输出结果:
名字:RUNOOB1 年龄:26 职位:高级程序员 薪水:1000.0 名字:RUNOOB2 年龄:21 职位:菜鸟程序员 薪水:500.0
-
运算符基本和c一致
学到的新东西:
-
短路逻辑运算符:当使用与逻辑运算符时,在两个操作数都为true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断第二个操作了。
public class LuoJi{ public static void main(String[] args){ int a = 5;//定义一个变量; boolean b = (a<4)&&(a++<10); System.out.println("使用短路逻辑运算符的结果为"+b); System.out.println("a的结果为"+a); } }
-
instanceof运算符:该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。摘抄如下
使用格式:
( Object reference variable ) instanceof (class/interface type)
如果运算符左侧变量所指的对象,是操作符右侧类或接口(class/interface)的一个对象,那么结果为真。
下面是一个例子:
String name = "James"; boolean result = name instanceof String; // 由于 name 是 String 类型,所以返回真
如果被比较的对象兼容于右侧类型,该运算符仍然返回true。
看下面的例子:
class Vehicle {} public class Car extends Vehicle { public static void main(String[] args){ Vehicle a = new Car(); boolean result = a instanceof Car; System.out.println( result); } }
以上实例编译运行结果如下:
true
-
-
循环和c一致,在对于数组的处理上多了一个增强型的for循环
语法格式
for(声明语句 : 表达式) { //代码句子 }
对于数组s[N]来说相当于一个
for(int i=0;i<lenth(s[N]);i++)
用法实例
public class Test { public static void main(String[] args){ int [] numbers = {10, 20, 30, 40, 50}; for(int x : numbers ){ System.out.print( x ); System.out.print(","); } System.out.print("\n"); String [] names ={"James", "Larry", "Tom", "Lacy"}; for( String name : names ) { System.out.print( name ); System.out.print(","); } } }
条件语句、switch case|和c完全一致
各种包装类划分:Number&Math类,Character类,String类和StringBuffer类
-
Number类(类方法大概包含:数据类型转换、比大小以及是否相等、对象初始化、进制转换)
-
包括对应基本数据类型的各种类
使用时基本上有两种情况:
public class Test{ public static void main(String args[]){ Integer x = 5; System.out.println(x.toString()); //以x类调用类方法 System.out.println(Integer.toString(12)); //以Integer类调用类方法 } }
-
Math(类方法大概包含求绝对值、高斯函数(ceil和floor)、最大最小值、求对数、三角函数和角度弧度)
基本上都是以Math类调用类方法
public class Test{ public static void main(String args[]){ Integer a = -8; double d = -100; float f = -90f; System.out.println(Math.abs(a)); System.out.println(Math.abs(d)); System.out.println(Math.abs(f)); } }
-
Character类(类方法大概包含判断是否是字母、数字、空白以及大小写,指定字母大小写,将字符转为长度为1的字符串)
基本上都是以character调用类方法
public class Test { public static void main(String args[]) { System.out.println(Character.isWhitespace('c')); System.out.println(Character.isWhitespace(' ')); System.out.println(Character.isWhitespace('\n')); System.out.println(Character.isWhitespace('\t')); } }
-
String方法
-