java跨平台性

java跨平台性是通过虚拟机jvm来决定的

软件模拟的计算机

java源程序编译成字节码(.class)相当于c的二进制可执行文件

jvm:相当于是操作系统+硬件环境 java解释器相当于cpu上

上面说了一个java的运行流程

下面来说一下JDK里面包含了java运行环境,java开发工具,java基础库类

http://www.oracle.com/index.html这个里面javase可以下载jdk

说一下jre:java runtiime envirtime Java运行时的环境和一些基础库类

jdk包含了jre

jdk的安装:注意安装路径,和改变一下jre,改成功能不可用

那具体什么是jvm,它放在什么地方?

jdk->jre->bin and lib,我们可以把bin酒当成jvm,lib就是jvm工作需要用到的基础核心库类

下面说一下配置环境变量:

%变量名(一般是一个地址路径,不带最后一个地址,单独设置,下划线大写命名)%\地址;

或者直接在path后面加上完整路径和一个分号结束(一般我们应把这个地址放到最前面,否则如果安装了旧JDK,就会出现路径查找错误)

path:path是系统用来指定可执行文件的完整路径。如果执行的可执行文件不在当前目录下,那就会依次搜索path中设置的路径。

  1. classpath:这个是寻找类文件,rar,zip文件的路径。如何设置当前目录(.)

set classpath=.;设置路径 与 set classpath=设置路径;.有什么区别?

“.”在前面的时候,java虚拟机会先从当前路径去寻找class文件,然后再到指定的路径去需找。如果”.”在后面,java虚拟机则会先寻找指定好的路径,然后再在当前的路径去寻找。

设置classpath的时候要加上 ; 就会在当前目录下查找

E:\>java -classpath D:\java\javase\code Hello

hello world

我们不想这样每次设置一下-classpath 我们想全局来使用

下面看一下CLASSPATH:

java基础第一篇注意最后结尾处除了有多个classpath,不然是不加分号的

 java文件名首字母大写,因为它毕竟是一个类文件

变量与c一样,显示隐式转换与c一样,乘除法与c一样。

不同:JAVA char(2byte)  byte(在整型中还有一个byte数据类型)占1个字节

说几个点:

  1. 不同的数据类型进行运算,除了小的的转大的,不用显示指定数据类型,其余都要
  2. 除了考虑数据类型字节存放,还应该考虑容量,它能不能存那么大的数据,不能存那么大必然造成数据类型缺失
  3. 其余按照c语言来考虑

这里我们来说一下负数的取余法则:

a%d:    a=pd+r  其中p是商(往往把它看成1),r是余数 负数取余更多考虑负数结果

负数尽量往小了算(小的取余大的还是小的,能取余就直接取余,负数取余是负数还是正数,主要去看被除数是正数还是负数,可以不用看这个公式)

 

(today+10) % 7  //如果10天之后,算是星期几,算轮回的话,选一个恰当的点来做。然后考虑一下边界满不满足

java基础第一篇

在使用比价运算符的时候,要求数据类型必须一致。

java基础第一篇

~:按位取反,就是1变成0,0变成1(这个和!逻辑非优先级都是比较高的)

&&:这个是短路与,短路与,就是左边只要为假,就不进行右边的判断了。

优先级就是与变量接触才会产生优先级

这里再来说一下原码,反码,补码:

正数原码,反码,补码都是一样。

负数保留符号位不变,其余按照规则来做就可以了。

如果我们想要输入某个数据,从键盘输入,这里暂时的先来说一下。

import  java.util.Scanner;//导入java的这个包

Scanner sc=new Scanner(System.in);//实例化一个类对象

java基础第一篇

下面是System里面的字段

java基础第一篇

int num=sc.nextInt();//从键盘中获得输入一个整数

为什么下面这段代码会有一个提示的小bug

java基础第一篇

java基础第一篇

上面说了一个扫描器没有被关闭掉,关闭扫描器其实就是关闭资源文件

java基础第一篇

java基础第一篇

这里说一下,JAVA设置布尔类型变量的时候,必须把布尔类型全部写完,比如

boolean flag=true;

JAVA的输出语句会自动换行System.out.println()这个会自动换行

System.out.print();//这个不会自动换行

 

函数重载:这个与C++语言类似

根据参数类型不同,参数的个数不同,与返回值是没有关系的

 

数组:

同一种数据类型的集合

c/c++: int arr[数组长度]={初始化}; int arr[2][3]={....}|{{},{}}

php:array(数据集) $arr=Array(“键”=》”值”),他可以不用数据类型完全一致

 

javascript:var arr1=new Array()  里面可以传值或者一个数,那么这个数就代表长度

var arr2=[] //这个里面放上数据/数据可以是任何类型的

 

OK,那我们来看一下java

它与c/c++是相反的,[]是放在数据类型的前面。

int[]  arr=new int[3]//说明有三个数据,可以在后面来给这三个数据

int[]  arr=new int[3]{1,2,3};

int[]  arr={直接给数据};

java获取数组长度,数组名.length

二维数组:

可以javascript类比java,,它也可以直接调动这个类,然后来进行操作,原因在于它把所有函数全部设置成了一个静态函数。

比如Arrays.函数,Math.函数

类比:

int[][] ar=new int[一维数组个数][每一个一维数组个数]

这里说一下,JAVA设置布尔类型变量的时候,必须把布尔类型全部写完,比如

boolean flag=true;

JAVA的输出语句会自动换行System.out.println()这个会自动换行

System.out.print();//这个不会自动换行

 

函数重载:这个与C++语言类似

根据参数类型不同,参数的个数不同,与返回值是没有关系的

数组:

同一种数据类型的集合

c/c++: int arr[数组长度]={初始化}; int arr[2][3]={....}|{{},{}}

php:array(数据集) $arr=Array(“键”=》”值”),他可以不用数据类型完全一致

 

javascript:var arr1=new Array()  里面可以传值或者一个数,那么这个数就代表长度

var arr2=[] //这个里面放上数据/数据可以是任何类型的

 

OK,那我们来看一下java

它与c/c++是相反的,[]是放在数据类型的前面。

int[]  arr=new int[3]//说明有三个数据,可以在后面来给这三个数据

int[]  arr=new int[3]{1,2,3};

int[]  arr={直接给数据};

java获取数组长度,数组名.length

二维数组:

可以javascript类比java,,它也可以直接调动这个类,然后来进行操作,原因在于它把所有函数全部设置成了一个静态函数。

比如Arrays.函数,Math.函数

类比:

int[][] ar=new int[一维数组个数][每一个一维数组个数]

java基础第一篇

下面进入到面向对象的环节:

java基础第一篇

java基础第一篇

java基础第一篇

对象也是可以进行传递的,然后可以调用里面的属性与方法

一个文件里面可以有多个对象,一个文件也可以有多个类,从主类开始一层层划分

这里需要我们注意的是,Java只有一个类或者接口是public的

java基础第一篇

备注:还是可以调属性的,但是它的属性也是一次性的,用完可能

/*

匿名对象:没有引用类型变量指向的对象称作为匿名对象。

 

需求: 使用 java类描述一个学生类。

 

匿名对象要注意的事项:

1. 我们一般不会给匿名对象赋予属性值,因为永远无法获取到,即时即用

2. 两个匿名对象永远都不可能是同一个对象。

 

 

匿名对象好处:简化书写。

 

 

匿名对象的应用场景:

1. 如果一个对象需要调用一个方法一次的时候,而调用完这个方法之后,该对象就不再使用了,这时候可以使用

匿名对象。

 

2. 可以作为实参调用一个函数。

 

*/

 

//学生类

class Student{

 

int num; //学号

 

String name; //名字

 

public void study(){

System.out.println("好好学习,为将来称为高帅富做准备!");

}

}

 

class Demo4{

 

public static void main(String[] args)

{

//创建一个学生对象

//Student s = new Student();

//new Student().name = "狗娃"; //匿名对象

//System.out.println(Student().name); //null这个对象与上一个不是同一个对象

System.out.println(new Student() == new Student()) ;  // "==" 用于引用类型变量时,比较的是内存地址。判断两个 对象是否为同一个对象一般来说是引用的这个地址

 

需求: 调用Student的study方法。

Student s = new Student();

s.study();

new Student().study()

}

}

下面来看一个没有封装的类

java基础第一篇

java基础第一篇

说的简单一点就是是个人就可以去修改

那我们如何实现封装,把里面的成员,全部设置成privaet,只保留有限的对外接口就可以了。

然后,就不能直接通过类的对象名.属性直接访问,不然肯定会报错。

封装的思想就是要保护数据。

比如我们给一个public set方法和get方法

对于每一个属性我们都可以提供这样一个方法,一个设置,一个获取。

比如这样提供一个设置属性的方法:

解释一下x.equas(y):当x与y是属于同一种对象时,并且值相等时,就返回true,否则返回false

1.隐藏了类的具体实现

2:操作简单

3:提高对象数据的安全性

后面会特别具体的来说明一下这个问题

下面来说构造方法:

构造方法,是你在实例化一个对象,然后往对象属性里面赋值的一个方法。定义与类名相同的方法即可被自动调用。可以添加常见几种权限修饰符进行修饰。

  1. 构造函数的函数名要与类名一样,而普通的函数只要符合标识符的命名规则即可。

构造函数没有返回值类型

下面来说构造方法:

构造方法,是你在实例化一个对象,然后往对象属性里面赋值的一个方法。定义与类名相同的方法即可被自动调用。可以添加常见几种权限修饰符进行修饰。

  1. 构造函数的函数名要与类名一样,而普通的函数只要符合标识符的命名规则即可。

构造函数没有返回值类型

java基础第一篇

这里来说一点与c++不同,JAVA如果不用构造函数,可以在定义的时候初始化,当然php也可以在定义的时候进行初始化。c++只能用构造函数进行初始化。注意在java里面,千万不要在主类里面在写类。在java文件中,一般只有一个public类声明

java基础第一篇

还可以向上面这样来写构造函数

我这里来说一下用this与不用This的区别,加this只是代表这个对象。调用这个函数的对象是谁,因为New一个对象空间都是独立的,那么这个对象也是独立的。

java基础第一篇

如果不用这个this,javac编译也不会报错,因为他本身就是有默认值的

 

 

 

 

 

相关文章:

  • 2021-08-28
  • 2022-02-15
  • 2022-01-10
  • 2021-10-27
  • 2021-06-17
  • 2022-12-23
  • 2021-09-13
猜你喜欢
  • 2021-06-10
  • 2022-12-23
  • 2021-10-02
  • 2021-11-01
  • 2021-09-01
  • 2021-06-08
相关资源
相似解决方案