1.Java环境搭建并编写第一个程序 “hello world”
在工作区新建一个project,在src下面新建一个class(可以看成一个结构体),就可以开始编写代码了
Java的main不单单是main,在打出main之后按 alt+/ 后有提示回车之后出现这句,即为Java的main函数
public static void main(String[] args){
}
System.out.println("hello world");
这句为Java的printf输出模式
2.JavaSE、JavaEE、JavaME的区别
- JavaSE:Java最标准的一些东西(比如C一开始的一些变量函数结构体这些)
- JavaEE:多了一些接口,用来做服务器的(比如C用来做面向Linux的一些api接口等)
- JavaME:多了一些接口,可以用来做手机程序的
- JRE:支持Java程序运行的平台
- JDK:Java语言的软件开发工具包,包含JRE
3.基本数据类型与C一致
System.out.println(“hello world”);
这里的 println 是带换行符的,语句里就不用再打\n
输出的时候打 Syso 再按 alt+/ 回车后就可以打出System.out.println();
int a;
a = 10;
int b;
b = 20;
int c;
c = a+b;
//printf("%d",a); 使用 + 可以完成占位符的功能
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println(a + "+" + b + "=" + c);
在Java里默认浮点数是double类型
若是float类型,可以使用强转 转换为float类
![]()
4.选择控制语句无差别
public class Test {
public static void main(String[] args) {
int a = 1;
if(a == 1){
System.out.println("a=1");
}else{
System.out.println("a=110");
}
switch(a){
case 1:
System.out.println("这是1");
break;
case 2:
System.out.println("这是110");
break;
}
}
}
5.循环控制无差别
public class Test {
public static void main(String[] args) {
int i;
for(i=0;i<20;i++){
System.out.println("cwt");
}
while(i>0){
System.out.println("cwt again");
i--;
}
}
}
6.数组有细微差别
public class Test { public static void main(String[] args) { int a[] = { 1,2,3}; System.out.println(a[0]); System.out.println(a[1]); System.out.println(a[2]); //int a[3]; int arry[] = new int[3]; } }
Java不能定义如 int a[3]; 这样的一个空数组,会报错,正确写法:int arry[] = new int[3];
但是可以这样定义 int a[] = {1,2,3}; 并且也能通过数组下标来访问
在定义的时候需要学会这样写:int[] testArry = new int[3]; 把中括号放在int后面更能强调他是个数组
//int a[3]; //int arry[] = new int[3]; int arry[] = null; arry = new int[3]; //也可以通过这种方式定义 int i; for(i=0;i<arry.length;i++){ arry[i] = i; //可以通过赋值方式给初值 } for(i=0;i<arry.length;i++){ System.out.println(arry[i]); }
值得注意的是,计算数组长度可以直接 .length 来获取,比较方便
7.函数有细微差别
Java的函数定义与C一样,但是不能像C那样直接调用:Test t = new Test(); t.myPrint();
如果要像C一样直接调用的话,需要在函数定义之前加一个static
public class Test {
void myPrint()
{
System.out.println("cwt");
}
public static void main(String[] args) {
Test t = new Test(); //像结构体一样,先定义之后再进行引用
t.myPrint(); // 不能直接引用
}
}
8.输入类Scanner
Java的输入类是使用 Scannner 控制的
import java.util.Scanner; //CTRL+shift+o;使用scanner必须要包含这个包
import java.util.Scanner; //CTRL+shift+o;使用scanner必须要包含这个包
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //构造方法
int a;
String str;
System.out.println("请输入一个整数");
a = sc.nextInt(); //int:输入int型
System.out.println("请输入一个字符串");
str = sc.nextLine(); //吸收回车符
str = sc.nextLine();
System.out.println("a="+a);
System.out.println("str="+str);
}
}
9.封装类
Java面向对象的三大特性:继承封装与多态
封装概念:
- 定义类,定义其属性、方法的过程称为封装
- 将东西包在一起,然后以新的完整形式展现出来(将方法和字段一起包装到一个单元中,单元以类的形式实现)
- 实现信息隐藏:隐藏对象的具体细节,不让外部直接访问到
- 将数据和方法包装进类中,加上具体实现的隐藏(访问修饰符),共同称为封装,其结果是一个同时带有特征和行为的数据类型
class Student
{
int age;
String name;
double score;
//Java中没有函数指针的概念,直接定义函数即可,由于面向对象特性不用设置形参,因为在此情况下,此方法可以访问到结构体中定义的变量
void introduce(){
//方法就是函数
System.out.println("age=" +age+ ",name=" +name+ ",score=" +score);
}
void TestFunc(){
System.out.println("TestFunc");
}
}
public class Demo1 {
public static void main(String[] args) {
//实例化一个对象
//类=模板
//类不能直接使用,不能直接访问变量,需要先实例化,申请一个空间使用
Student stu1 = new Student(); //构造方法进行传参,也等同于之前使用结构体指针定义时,为指针分配空间
stu1.age = 18;
stu1.name = "liming";
stu1.score = 78.5;
stu1.introduce();
}
}
10.封装之访问修饰符
public,private,protected和默认 可以修饰普通变量、函数和类,用来规范它们的一些使用空间
![]()
变量在进行private之后,同一个类里的函数可以用点的方式获取,但在其他类中不可以通过点运算符的方式获得,但是可以通过被获取的函数间接获取到这个值
11.封装之访问修饰符封装属性及方法
属性封装的实现:对于被private修饰的变量,一般会通过一对接口set与get来对外进行传递
private int sex; public void setSex(int finalSex){ sex = finalSex; } public int getSex(){ return sex; } stu1.setSex(10); System.out.println("sex=" +stu1.getSex());
方法封装的实现:
(传参进来将实际年龄隐藏起来,输出18)
class Student { int age; String name; double score; private void myAge(int myAge){ age = myAge; } public void setAge(int realAge){ age = realAge; } public int getAge(){ myAge(18); return age; } } public class Demo1 { public static void main(String[] args) { //实例化一个对象 //类=模板 //类不能直接使用,不能直接访问变量,需要先实例化,申请一个空间使用 Student stu1 = new Student(); //构造方法进行传参,也等同于之前使用结构体指针定义时,为指针分配空间 // stu1.age = 18; stu1.setAge(36); System.out.println("age=" +stu1.getAge()); } }
12.封装之构造方法
构造方法的概念和作用:
- 负责对象初始化工作,为对象的属性赋合适的值
- 创建对象时,其类的构造方法确保在用户操作对象之前,系统保证初始化的进行
构造方法的语法规则:
Student(){
}
- 构造方法名与类名一致
- 没有返回类型(void并不是没有返回类型,是返回的是无类型的)
- 方式实现主要为字段赋初值
构造方法的调用:new操作符
**Java保证每个类都有构造方法(里面默认都有包含一个Student(){})
方法重载:函数名可以一样,但是参数列表不一样
class Student
{
int age;
String name;
double score;
//Java中,方法可以被重载,意思就是函数名可以一样,但是参数列表不一样,在C中不允许
Student(){
System.out.println("构造方法一被调用");