java &= ~_Java基础一

1 对象:其实对象就是类的实例化,如创建一个类"车" ,创建一个类的对象“小汽车”  而且有颜色,大小,车速等等。

2 类:例如车有:小汽车、大卡车、三轮车、四驱车等等。但要用一个词概括它们,则可以统称为车。现在这个“车”就相当于 类

3 方法:方法就是行为。还以车为例,小汽车可以载人、大卡车可以载货。载人、载货这俩个行为就可以作为方法。

4 变量有

1 )局部变量 :局部变量定义在构造方法,方法或者语句块之中称之为局部变量。 局部变量存活在方法中,当方法被销毁则变量也就不存在。

2)成员变量:成员变量定义在类之中,方法体之外的变量。

3)类变量:类变量是static修饰的变量,但也是在类之中,方法体之外。

封装:主要是把对象方法实现的细节封装起来,对外暴露公共方法。使用封装不仅仅安全,更可以简化操。

继承:主要子类继承父类的方法。子类获取到父类的全部方法和属性。父类的方法完全向子类暴露,这也破环封装。

多态:同一个行为具有多个不同表现形式或形态的能力。

多态的实现方式:重写和重载。

好处:1通过重载同一方法具有不同使用的方式。

2当把不同的子类对象都当作父类类型来看,可以屏蔽不同子类对象之间的实现差异,从而写出通用的代码达到通用编程,以适应需求的不断变化。

抽象:抽象就是把多个事物具有共同的特点抽取出来,总结成为一个共同的模型,就是把复杂的事情简单化。

三 基础数据类型和封装类型数据

基础数据类型

整数类型:byte,short,int,long

浮点数类型:float,double

字符类型:char

布尔类型:boolean

byte   1字节   8位,默认值为0。

short  2字节  16位,默认值为0。

int       4字节  32位,默认值为0。

float      8字节  64位,默认值为 0.0f。

double  8字节  64位,默认值是 0.0d。

long       8字节   64位,默认值为 0L。

char        2节字   16位Unicode 字符。

boolean(布尔类型) 数据只有 true和flase。

对于基本数据类型的数据类型转换有:1 自动类型转换  2 强制类型转换

对于自动类型转换来说:就是一个表数范围小的数值或者变量直接赋值给里一个表数范围大的变量。否者反之为强制数据类型转化。对于强制数据类型转化来说。它的精度会丢失。举个例子,有一个装满10升水的杯子,把杯中的水倒入一个可装5升水的空瓶子中。对于5升的杯子他只能装5升水,剩下的5升只会溢出,这就是相当于强制转换的精度丢失。

封装类型数据

Byte

Short

Integer

Float

Double

Long

Boolean

Character

String类型注意.String是一个单独的封装类,他没有对应的基本数据类型.它也是常用的封装类,具体常用方法可以查询JDK_API.

四 Java运算符

1 算术运算符

A的值为10,变量B的值为20:

+          加法 - 相加运算符两侧的值A + B 等于 30

-           减法 - 左操作数减去右操作数A – B 等于 -10

*           乘法 - 相乘操作符两侧的值A * B等于200

/            除法 - 左操作数除以右操作数B / A等于2

%          取余 - 左操作数除以右操作数的余数B%A等于0

++ 自增: 操作数的值增加1   B++ 或 ++B

--自减: 操作数的值减少1       B-- 或 --B 等于

2 关系运算符

运算符描述例子

==      检查如果两个操作数的值是否相等,如果相等则条件为真。(A == B)为假。

!=        检查如果两个操作数的值是否相等,如果值不相等则条件为真。(A != B) 为真。

>         检查左操作数的值是否大于右操作数的值,如果是那么条件为真。(A> B)为假。

>=     检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。(A> = B)为假。

<=        检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 (A <= B)为真。

3 位运算符

&  按位与。二进制运算时,当俩位同时对应都是1 ,则结果为1,否则为0。

|   按位或。二进制运算时,当俩位同时对应都是0,则结果为0,否者为1。

^  按位异或。二进制运算时,当俩位同时对应相同时,则结果为0,否者为1。

~  按位非,单目运算符。二进制运算时,把操作数的每个位全部取反(包括操作符)。

<< 左移运算符。

>> 右移运算符。

>>> 无符号右移运算符。(位移详细可查计算机组成原理的运算方法这一章)

4 逻辑运算符

&&  与   只有前后了俩个运算符都true才返回true,否者返回false。

&   与(不短路)作用与&&相同,但是不会短路。

解释短路,例如(x>10&&y<20),当x>10返回false的时候,就不会继续向后执行,称之为短路。

(x>10&y<20),当x>10返回false的时候,但是还会继续执行是否y<20,称之为不断路。

||  或   前后俩个操作数只要有一个为true时,就会返回true;

| 或 作用与||相同,但是不会短路。

!非 对于操作数来说,如果操作数为true,则返回false。如果操作数为false,则返回true。

5 赋值运算符

=

+=       C+=A 等同于C=C+A

-=        C-=A 等同于C=C-A

*=        C*=A 等同于C=C*A

6 三目运算符(条件运算符)【?:】

x=10    y=20

举个例子 String    str=x

上面的例子代表是如果x

如果x

就等同于String  str=null;

if(x

Java语言支持一些特殊的转义字符序列。符号字符含义

\n     换行 (0x0a)     \r      回车 (0x0d)     \f       换页符(0x0c)

\b      退格 (0x08)    \0      空字符 (0x0)   \s      空格 (0x20)

\t       制表符 (按tab按键)

@echo off rem @echo %cd% rem @echo %~d0 rem @echo %~dp0 rem @echo %~df0 set CAF_BOOT_HOME=%~dp0 rem set JAVA_HOME_PR=%~dp0jstack echo CAF_BOOT_HOME: %CAF_BOOT_HOME% echo %1 echo %2 set MD_BOOT_ARCH=%PROCESSOR_ARCHITECTURE% rem @echo %MD_BOOT_ARCH% set MD_BOOT_OS_KERNEL=win rem @echo %MD_BOOT_OS_KERNEL% @REM ==== START VALIDATION ==== if not &quot;%JAVA_HOME%&quot; == &quot;&quot; goto OkJHome echo. echo Error: JAVA_HOME not found in your environment. &gt;&amp;2 echo Please set the JAVA_HOME variable in your environment to match the &gt;&amp;2 echo location of your Java installation. &gt;&amp;2 echo. goto error :error set ERROR_CODE=1 @REM Set JAVA_HOME=%JAVA_HOME_PR%\runtime\java\%MD_BOOT_ARCH%-%MD_BOOT_OS_KERNEL% :OkJHome echo Checking java home: %JAVA_HOME% if exist &quot;%JAVA_HOME%\bin\java.exe&quot; goto doJob :doJob @setlocal enabledelayedexpansion for /r &quot;%CAF_BOOT_HOME%\&quot; %%k in (lcm-metadata-shell*.jar) do ( @set MD_BOOTSTRAP=&quot;%%k&quot; ) echo Checking MD bootstrap: %MD_BOOTSTRAP% echo &quot;%JAVA_HOME%\bin\java&quot; -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar %MD_BOOTSTRAP% &quot;%*&quot; &quot;%JAVA_HOME%\bin\java&quot; -Dloader.path=&quot;%CAF_BOOT_HOME%server\runtime\libs\&quot; -jar %MD_BOOTSTRAP% &quot;%*&quot; 和@echo off rem @echo %cd% rem @echo %~d0 rem @echo %~dp0 rem @echo %~df0 set MD_BOOT_HOME=%~dp0 rem set JAVA_HOME_PR=%~dp0jstack echo MD_BOOT_HOME: %MD_BOOT_HOME% echo %1 echo %2 set MD_BOOT_ARCH=%PROCESSOR_ARCHITECTURE% rem @echo %MD_BOOT_ARCH% set MD_BOOT_OS_KERNEL=win rem @echo %MD_BOOT_OS_KERNEL% @REM ==== START VALIDATION ==== if not &quot;%JAVA_HOME%&quot; == &quot;&quot; goto OkJHome echo. echo Error: JAVA_HOME not found in your environment. &gt;&amp;2 echo Please set the JAVA_HOME variable in your environment to match the &gt;&amp;2 echo location of your Java installation. &gt;&amp;2 echo. goto error :error set ERROR_CODE=1 @REM Set JAVA_HOME=%JAVA_HOME_PR%\runtime\java\%MD_BOOT_ARCH%-%MD_BOOT_OS_KERNEL% :OkJHome echo Checking java home: %JAVA_HOME% if exist &quot;%JAVA_HOME%\bin\java.exe&quot; goto doJob :doJob @setlocal enabledelayedexpansion for /r &quot;%MD_BOOT_HOME%\&quot; %%k in (lcm-metadata-shell*.jar) do ( @set MD_BOOTSTRAP=&quot;%%k&quot; ) echo Checking MD bootstrap: %MD_BOOTSTRAP% echo &quot;%JAVA_HOME%\bin\java&quot; -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar %MD_BOOTSTRAP% %* &quot;%JAVA_HOME%\bin\java&quot; -Dloader.path=&quot;server/&quot; -jar %MD_BOOTSTRAP% %* pause区别和联系
最新发布
03-08
&lt;think&gt;嗯,用户给了两段批处理脚本,让我比较它们的区别和联系。首先,我需要仔细看看这两段代码有什么不同。看起来两个脚本都是用来启动Java应用程序的,但有些变量和参数设置的不同。 首先,用户可能是在使用这两个脚本来启动某个基于Java的应用,可能是他们项目中的部分。需要比较变量名,比如第个用的是CAF_BOOT_HOME,而第二个是MD_BOOT_HOME。这可能意味着他们属于不同的项目或模块,CAF和MD可能代表不同的组件。 接下来,设置JAVA_HOME的部分,两个脚本都有检查JAVA_HOME是否存在,如果不存在就报错。但第个脚本在错误处理部分有注释掉的设置JAVA_HOME的代码,而第二个没有。这可能说明第个脚本原本打算在找不到JAVA_HOME时使用自定义路径,但被注释掉了,而第二个可能依赖用户正确设置环境变量。 然后,在查找jar文件的部分,第个脚本使用%CAF_BOOT_HOME%作为根目录,而第二个使用%MD_BOOT_HOME%。这可能影响他们查找lcm-metadata-shell*.jar的位置,进而影响应用程序的启动。 另外,在Java启动命令的参数上,第个有-Dloader.path参数指向server/runtime/libs/,而第二个是server/。这可能关系到类路径的加载,第个更具体,可能依赖更多库文件,第二个可能结构更简单。同时,第个脚本在传递参数时用了&quot;%*&quot;,而第二个用了%*,虽然这在大多数情况下可能没有区别,但加上引号可能更安全,特别是在参数有空格的时候。 还有,第二个脚本最后有个pause命令,这会让窗口在运行后暂停,方便查看输出,而第个没有,可能是在后台运行或者自动关闭。用户可能注意到了这点,想知道为什么个会暂停而另个不会。 用户的需求可能是想了解这两个脚本的异同,以便调试或统脚本,或者在不同环境中正确使用。他们可能在部署时遇到了问题,比如JAR包找不到,或者Java参数不正确,导致应用启动失败。需要指出变量名、路径设置、参数传递和pause命令的区别,以及这些差异如何影响脚本的行为。 同时,用户可能希望知道这些脚本的联系,比如是否属于同项目的不同部分,或者个是另个的修改版本。可能需要指出共同的结构,如JAVA_HOME检查、循环查找JAR文件、启动Java应用的方式等,这些都是它们的共同点,而变量名和路径则是不同点,适应不同的配置需求。 总结来说,用户需要明确两个脚本在变量定义、路径设置、启动参数和错误处理上的区别,以及它们的共同结构,以便更好地理解和使用它们,或者进行必要的调整以适应他们的具体环境。&lt;/think&gt;以下是两个批处理脚本的详细对比分析: 1. 变量定义差异 - 脚本1:`set CAF_BOOT_HOME=%~dp0` - 脚本2:`set MD_BOOT_HOME=%~dp0` - 区别:前者使用变量名`CAF_BOOT`前缀,后者使用`MD_BOOT`前缀 2. 路径配置差异 - 脚本1:`-Dloader.path=&quot;%CAF_BOOT_HOME%server\runtime\libs\&quot;` - 脚本2:`-Dloader.path=&quot;server/&quot;` - 区别:前者使用完整路径结构,后者使用相对路径 3. 参数传递差异 - 脚本1:`%MD_BOOTSTRAP% &quot;%*&quot;` - 脚本2:`%MD_BOOTSTRAP% %*` - 区别:前者用引号包裹所有参数,后者直接传递 4. 结束命令差异 - 脚本2最后包含`pause`命令用于调试 - 脚本1没有暂停命令 共同特征: 1. 基础结构相同 - 都使用`%~dp0`获取脚本所在目录 - 相同的JAVA_HOME检查逻辑: ``` if not &quot;%JAVA_HOME%&quot; == &quot;&quot; goto OkJHome echo Error... goto error ``` 2. JAR文件搜索方式 - 都使用`for /r`循环查找匹配的JAR文件: ``` for /r &quot;%..._HOME%\&quot; %%k in (lcm-metadata-shell*.jar) ``` 3. 调试参数配置 - 均包含远程调试参数: `-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005` 执行流程图对比: ``` 脚本1执行流程: 设置CAF_BOOT_HOME &rarr; 检查JAVA_HOME &rarr; 搜索JAR &rarr; 带详细路径启动Java 脚本2执行流程: 设置MD_BOOT_HOME &rarr; 检查JAVA_HOME &rarr; 搜索JAR &rarr; 带简化路径启动Java &rarr; 暂停 ``` 典型应用场景差异: - 脚本1:适用于需要精确控制依赖路径的企业级部署环境 - 脚本2:适合快速测试场景,路径配置更灵活,末尾`pause`便于查看输出结果 建议调试方法: 1. 在脚本开头添加: ```bat echo 当前目录:%~dp0 dir /s/b *.jar ``` 2. 检查Java路径: ```bat where java ``` 3. 使用参数测试: ```bat call your_script.bat &quot;param with space&quot; ``` 数学表达示例(路径计算): 设脚本路径为$P\in\mathbb{R}^3$,则`%~dp0`可表示为: $$P = \begin{pmatrix} x \\ y \\ z \end{pmatrix}, \text{其中} z=0 \text{表示平面路径}$$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值