Java初识:

Java初识:

在进入Java的学习之前,需要知道其中的基础概念。

一、大前端时代:

	安卓开发:Java写的;
	IOS开发:swift或者Objective-C写的;
	JavaScript(简称JS)语言出来后,安卓开发,IOS开发都可以用它写。

注意:
RN ,是JS的框架,用来做移动端开发的。JS也是做网页前端开发,给网页做动态效果。(可以说JS功能很强 大,可以前端开发,也可以后端开发)

二、Java的特性:

  • 可移植性:既可以在Windows下使用,也可以在Linux下使用 ,更可以在其他系统下。
  • 简单性:没有头文件、指针、结构、联合、操作符重载、虚基类等,开发环境也是远远超过其他语言。
  • 面向对象:(C语言是面向过程,重行为),Java是面向对象。
  • 安全性:使用Java可以构建防病毒、防篡改的系统。
  • 健壮性
  • 多线程(重要):是第一个支持并发程序设计的主流语言。

注意:

  1. C语言是编译型语言;
  2. Java是半编译半解释型语言:
    ——javac:就是编译过程,将.java文件编译成.class(二进制文件,中间文件),.class文件是给JVM(Java虚拟机)来阅读的;
    ——java:解释过程,就是JVM将.class文件翻译为底层操作系统字节码,这个时候才是可运行状态。

三、认识Java:

Java是纯的面向对象的语言,所有代码都必须嵌套在类(class)中。

——主类:源文件(.java)的命名必须与主类名(public class)保持一致,并且一个源文件有且只有一个主类,但是源文件中可以有多个其他类。

——主方法:(public static void main(){})存在于主类之中。

四、Java程序编译——执行流程:

——javac命令:将主类名称.java——>主类名称.class(编译)

——java命令:java 主类名称(执行)

注意:

  • 在Java中,主类是程序的入口。
  • 当编译过程中,出现了”编码GBK的不可映射字符“错误时,编译命令应该改为:javac -encoding UTF-8 主类名称.java

五、探究

public static void main(String[]  args){
	主方法内容;
}中的String[]  args,也就是通过命令行向主方法传参数。

(1)String[] args:字符串数组,叫做args。
(2)如何给该数组赋值?
在执行过程中,java 主类名称 赋的值1 赋的值2 ……。
eg:java Test hello

public class Test{
    public static void main(String[] args){
        System.out.println("3班欢迎您");
        System.out.println(args[0]);
    }
}

这个时候hello就会成为args[]这个数组的第一个值。

六、JDK——>JRE——>JVM(由外到内)

(1)JDK:是Java的开发程序包,包括Java的运行环境、Java的工具、Java基础的类库。它比JRE多了编译器javac以及调试工具JConsole、jstack,针对Java的程序员(程序员才会用到JDK)。

(2)JRE:是Java Runtime Environment的缩写,就是Java的运行环境。它又包含了JVM(Java的虚拟机)以及Java的核心类库,是运行Java程序的环境,针对使用Java程序的客户。

(3)JVM:Java虚拟机,是Java移植性的关键。

七、8大数据类型:

数据类型的默认值需要结合类来观察,主方法中变量必须先赋值在使用,不存在默认值。

(1)、数值型
a、整型:

  • byte(-128~127)——1个字节;
  • short——2个字节;
  • int(-231~231-1)——4个字节;
  • long;

注意:

  1. 在Java中,任何一个整型常量均为int类型。
  2. int 的包装类是Integer
    (int maxValue = Integer.MAX_VALUE);
  3. long 的包装类是Long.MAX_VALUE;

b、浮点型:
float(小)、double(大)
注意:

  • 描述整数就用int,描述小数就用double,long一般用于描述日期、时间、内存、文件大小,IO处理使用byte。
  • 在Java中,因为小数常量默认是double类型,所以如果想要定义一个float就需要在小数后面追加一个f或者F。
    eg:float f1= 10.2;
    (右边是大类型,左边是小类型,因此需要在数值后面加f或者F)。
    eg:
public class Test{
    public static void main(String[] args){
         System.out.println(1.1*1.1);
    }
}

本来结果是1.21,但是输出结果却是1.2100000000000002,之所以会出现这种情况,是因为在双精度后面会有丢失。第一种方法是可以使用new BigDicimal进行小数的计算,这样就不会有数据的丢失。第二种方法就是将双精度转换为单精度,代码如下所示:

public class Test{
    public static void main(String[] args){
        float f1 = 1.1f;
        float f2 = 1.1f;
         System.out.println(f1*f2);
    }
}

这时输出的结果就是1.21。
(2)、字符型:
char一般用于描述中文(基本在Java中不在使用了,正在逐渐被String类所替代)。

注意:

  • 字符型用‘ ’表示。并且char(小)与int(大)可以相互转换。大的转小的,需要强转,小的转大的直接赋值。
  • 在Java中,字符型数字与整型数字绝对不相等。 eg:‘0’ != 0;
  • Java采用Unicode编码,是16进制编码,支持世界上所有语言,因此可以直接使用汉字进行编码。

——String 类的初步认识:

  • 描述单个字符用char,描述多个字符就用String类,它不是基本数据类型,而是引用数据类型,String 类用 “ ”;

  • 只要出现字符串,其他任何类型(不只是基本数据类型)与字符串直接“+”,都会先转为字符串而后作字符串的拼接操作。

(3)、布尔型:

	boolean(true   false)

——小知识1:
long maxValue = Integer.MAX_VALUE + 1;
System.out.print(maxValue);
输出结果是?
-2147483648
因为代码是从右向左执行的,右边已经是int类型了,因此long依旧保存着右边的运行结果,所以结果并不是2^31-1 +1 = 231。如果想要得到231,则将代码改为long maxValue = Integer.MAX_VALUE + 1L(l小写,但是不推荐);或者
long maxValue = (long)Integer.MAX_VALUE + 1,这里严格意义上叫做类型声明。

——小知识2:
在Java中,小的数据类型与大的数据类型做数值运算时,小的数据类型会自动提升为大的数据类型。
eg:10 + 1L;
会将int 类型提升为long 类型,运算结果是long类型。
反之,大的数据类型要转换为小的数据类型必须要强转,强转可能会丢失数据。

——小知识3:(特别重要)
byte与int之间类型的转换问题有一点区别于上述所讲。
a、整型常量若在byte类型的保存范围之内,可以直接赋值给byte(无需强转);
b、int i1 = 120;
byte b1 = 128;
System.out.println(b1);
程序会报错,显示从int转换到byte可能会有损失。
总结:若整型常量值超出byte范围,必须强转;
整型变量值是否在byte范围中,都需要强转(如上面代码)。
c、byte b1 = (byte)300;
System.out.print(b1);
会输出44,因为byte一个字节是8个比特位,只会保存300的最后8位。

——小知识4:
GBK是简体中文编码。(GB就是国标的意思)
gb2312也是中文编码,但是多了支持繁体中文。
ISO-8859-1是浏览器的默认编码。
UTF-8是Unicode编码与ISO-8859-1的结合体,同样支持所有语言。因此在前端开发与后端开发中,都可以使用UTF-8。

八、3大引用数据类型:

  1. 数组;
  2. 类;
  3. 接口;

九、Java中的类型的默认值:

  • 整型(int byte short long)默认值是0;
  • 浮点型(float double)默认值是0.0;
  • 字符型(char)默认值是\u0000;
  • 布尔型(boolean)默认值是false;
  • 引用数据类型(数组、类、接口)默认值是null;

十、Java中的运算符:

(1)三目运算符:
语法:布尔表达式?数值1:数值2;

(2)比较运算符:
注意:比较运算符的输出结果是boolean类型的;
eg:System.out.print(‘哈’ > 10);
char类型与int类型比较,将会输出true。

(3)逻辑运算符:

a、表示逻辑或:| ||(如下例子所示);
b、表示逻辑与:& &&;

   public class Test{
        public static void main(String[] args){
            if(1<2 | 10/0== 0){
                System.out.println("yes");
            }
        }
    }

<总结>:
在if语句中使用 “ | ” 时,表示多个条件都需要判断,即便有表达式返回true,剩余条件仍然需要判断。但是使用 “ || ” (就是短路非),只有一个条件返回true,剩余条件就不在判断。
同理,当使用 “ & ” 时,明确地表示多个条件都判断了,如果在多个表达式中有条件返回false,剩余条件将也要判断;而如果使用 “ && ” (就是短路与),只要有条件返回false,剩余条件就不在判断,返回false。
在Java中,逻辑运算符就是用短路与和短路非。

(4)位运算符:
有&、|、^、~、>>、<<。

:右移一位除以2;
<<:左移一位乘以2;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值