Java数据类型、语法和代码块

java基础

类(class)语法元素

public class HelloWorld{?}

public class 是类修饰词

helloWorld是类名,要与文件名一致

大括号内是类得内容


main方法(main method)语法元素

public class HelloWorld{  public static void main(string[] args){?  }}

public static void是方法修饰词

小括号内是方法的参数(parameter)

String[] args是方法参数

大括号内是方法的内容,又称方法体(method body)

Main方法最为特殊的一点是,它是java程序的入口,就好像游戏的开始按键


System.out.println

public class HelloWorld{  public static void main(String[] args){    System.out.println();  }}

System.out.println 是java平台提供的类库内容,可以将内容输出到标注输出,在我们的例子里,就是命令行(commandline)

小括号里的内容还是参数列表

没有参数的情况下,System.out.println会输出一行空行,也就是类似我们桥下一个回车键


字符串

public class HelloWorld{  public static void main(String[] args){    System.out.println("Hello World")  }}

在java里,双引号引起来的内容叫一个字符串

字符串不是语法内容,可以写任意字符


初识java程序

初识class

java语言中的一等公民,java程序就是一个个的类的组成的

类由修饰符,类名和类的内容组成

类名必须与保存的类原文件的内容相同

初识main方法

main方法是Java程序执行的入口

方法由放大修饰符,方法名,参数列白和方法体等组成


从加减乘除到变量

计算加减乘除

字面值

加减乘除运算符

public class test1 {    public static void main(String[] args) {        System.out.println(5 + 6);        System.out.println(5 - 6);        System.out.println(5 * 6);        System.out.println(5 / 6.0);?        System.out.println(1 + 2 * 3 / 4.0 + (5 + 6) / 7.0);    }}?

基本数据类型——int

java中所有的数据都有类型,类型决定了存储的形式和占用的存储空间。举个例子:

微博

博客

连载小说

int用来表示一个整数,取值范围在 -2^31 ~ 2^31-1。计算出来是-2147483648 ~ 2147483647

关键字(key word)和标识符(Identifier)

标识符:

由大小写英文字符,数字和下划线_组成的,区分大小写的,不以数字开头的文字

可以用作Java中的各种东西的名字,比如类名,方法名等

标识符是区分大小写的

关键字是Java语法的保留字,不呢个用来命名

用变量解决问题

变量

如何创建变量

如何给变量一个值

如何使用变量

public class test1 {    public static void main(String[] args){        int a = 1;        int b = 2;        int c = 3;?        int x = 0;?        int y = a * x + b * (x * x) + c * (x * x * x);?        System.out.println(y);    }}
 

从加减乘除到变量和语句

java代码三级跳——表达式,语句和代码块

表达式(expression):Java中最基本的一个运算。比如一个假发运算表达式。1+2是一个表达式,a+b也是

语句(statement):类似于平时说话时的一句话,由表达式组成,以;结束。1+2;1+2+3;a+b;都是语句

代码块:一对大括号括起来就是一个代码块

Java是区分大小写的

关键字和标识符都是区分大小写的

类名必须与文件名一致,包括大小写要求

使用变量时,名字必须和声明时的标识符大小写一致

方法名也区分大小写。main和Main是两个名字

类型也区分大小写。int是数据类型,Int不是

System.out.println可以呗Java认识,SYSTEM.Out.Println就不行

字面值不简单

整数的字面值类型默认是int

十六进制字面值和八进制字面值

超过int的范围会怎么样?需要使用范围更大的类型

int x=5;int y=x+1;包含了多少语法点

int x = 5;

关键字、标识符、运算符、字面值、数据类型,Java中的数据都有类型,数据类型有其取值范围、变量的创建和赋值

int y=x+1;

变量的使用,标识符区分大小写、加法运算符、表达式,语句和代码块


Java中的基本数据类型

认识二进制

十进制:每一位可以是0~9这10个值,到10进位一百用十进制表示就是100

二进制:每一位可以是0、1,到2进位,100用二进制表示就是1100100,十就是1010

十六进制:每一位可以是0~F这15个值,到16进位,一百用16进制就是64,十就是A

bit和byte:

一个二进制的位叫做一个bit,俗称小b,宽带中的单位都是小b

八个二进制的单位,组成一个byte,俗称大B,硬盘等存储的单位,都是大B

Byte是计算机中最基本的衡量存储的单位,计算机在对外使用时不会用小b作为划分存储单位

数字的基本数据类型

整数类型

byte占用1个byte,值与是-128~127

short占用2个byte,值域是-32768~32767

int占个byte,值域是-2147483648~2147483647,java中缺省是int型

long占用8个byte,值域是-9223372036854774808~9223372036854774807

浮点(小数)类型

float 有精度,值域复杂±3402823466385288598117041834516925440

double 精度是float的一倍,占用8个byte。Java中浮点数缺省是double类型

符号位

布尔和字符数据类型

boollean占用4个byte,值域是true,false

char占用2个byte,值域是所有字符(最多65535个)

使用各种基本数据类型

public class test1 {    public static void main(String[] args){        byte byteVar = 100;        System.out.println(byteVar);?        short shortVar = 30000;        System.out.println(shortVar);?        int intVar = 1000000000;        System.out.println(intVar);?        long longVar = 80000000000L;        System.out.println(longVar);?        float floatVar = 100.0000000666F;        System.out.println(floatVar);?        double doubleVar = 100.0000000666;        System.out.println(doubleVar);?        boolean booleanVar = true;        System.out.println(booleanVar);?        char charVar = ‘a‘;        System.out.println(charVar);?    }}?

Java中的运算符

什么是运算符

运算符对一个或是多个值进行运算,并得出一个运算结果

运算符的运算结果类型有的是固定的,有时候会更具被计算的值变化。比如两个int相加,结果类型就是int。两个byte相加就是byte

除赋值运算符外,运算符本身不会改变变量的值

取模运算符

用来计算余数

负数也可以被取模

负数也可以取模

小数也可以取模

整数的除法运算

int除以int还是int,不会变成浮点数

比较运算符和布尔运算符

比较运算符:

>、>=、<、<=、!=、==

布尔运算符

!、&、&&、|、||

小括号运算符

小括号运算符内可以包含任何运算符,决定运算符顺序

运算符优先级

()

*、/、%

+、—

>=、<、<=

==

!=、

&、&&、|、||

=


Java中的位运算符

字面值的八进制和16进制

以0开头的整数为8进制

以0x开头的是16进制

按位运算

并:&

或:|

异或:^

取反:~

位移运算符

>>:符号位不动,其余位右移,符号位后边补零,又称带符号位移

>>>:符号位一起右移左边补0,又称无符号右移

<<:左移,右边补0,左移没有带符号这么一说,应为符号在最左端

位移运算符不会改变原变量的值

按位运算和位移运算都不会改变原本的变量的值

位移运算符的用处

按位运算:掩码

位移运算符:高效除2


基本数据类型的更多语法点

变量要先赋值后使用

不给变量赋值代表什么

声明变量

不赋值使用会怎么样

占用内存,报错

计算并赋值运算符

使代码更简洁,如a = a + 10,简化为a+=10

+=、-=、/=、*=、%=、&=、^=、|=、<<=、>>=、>>>=

数据类型自动转换

不会出现问题的类型转换,编程语言可以做自动类型转化,比如低精度向高精度转换,可以发生再算数运算,也可能发生再赋值

数值精度排序

double>float>long>int>short>byte

char可以转换为int

应为char是无符号数,所以不可以自动转换为short

强制数据类型转换

可能出现问题的类型转换,需要使用强制类型转换,比如高精度向低精度转换、强制类型转换也是操作符、语法是用小括号括起目标类型放在被转换值得前面,强制类型转换会造成数据精度丢失

(目标类型) 值

数值溢出

数值计算一旦已排除,结果失去意义,比如两个正数加出负数,要对值有大概的估计

从数值计算溢出理解程序员和编程语言责任得分界线

编程语言按照语法和计算机交互,程序员理解问题,并转换为程序,程序员解决问题

字符集编码和字符串

什么是字符集和编码

什么是字符集(Charset):

字符得集合,一般会包含一种语言的字符。比如GBK,是包含所有常用汉字字符的字符集,ASCII是包含英文字符的字符集,字符就是Java中的char是charset的简写

什么是编码:

char代表一个字符,char的本质也是数字,将数字映射道字符,就叫编码。编码是有标准的

编码和字符集介绍

常用字符集介绍

ASCII码,ASCII表

Unicode 包含世界上所有常用字符,编码也有几种,包括UTF-8,UTF-16

Unicode,GBK等所有常用字符集,都会兼容ASCII。举个例子,字符A再这些字符集中都是对应数字65

Java中的字符集

Java中是UTF-16的Unicode

当把char转换成数字时需要使用int

ASCII码和转义符(escape character)

如何输出特殊字符

ASCII码+char,将这个数字转换成char,然后输出

转义符。转义符用来给字符赋值,也可以用在字符串里面,作为字符串中的一个字符

转义符语法和常用转义符

\n,换行符

\",双引号

\t,制表符

\uXXXX,unicode编码对应的字符

字符串的拼接

将变量穿插在字符串中输出

字符串可以和任何类型进行加法运算,会将这个值拼接道字符串上。可以使用+=操作符进行拼接

字符串不是Java中的基本数据类型(String类)

字符串类型的名字叫做String

可以使用String str = "abc"来创建

String不是Java中的保留字

String的拼接不会改变原String变量的值,改变其值要使用赋值语句


打印26个连续的字符

public class test1 {    public static void main(String[] args){        char ch = ‘A‘;        int num = ch;        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));        System.out.println(num + "\t" + ((char) num++));?    }}?


程序执行流程

if-else语句

代码块是顺序执行的,只要不报错就会一行行的进行下去

if(boolean值){  if语句块}else{else语句块}

if-else语法只有一个语句被执行

都是Java中的关键字

把if-else看做一个表达式,整体还是顺序执行

if-else的嵌套

if-else的简化

if-else省略大括号

如果if或else的语句块只有一个语句,可以省略大括号

if (boolean值)    if语句块else    else语句块if (boolean值){    if语句块}else if(){    if语句块}else{    else语句块}

for语句

让程序在满足某条件时,重复执行某个代码块,for是关键字

初始语句在for循环开始前执行一次,以后不再执行;循环体条件表达式在每次循环体执行前会执行,如果为true,则执行循环体,否则循环结束;循环体后语句会在每次循环执行后被执行

for (初始语句;循环体条件表达式;循环体后语句){    for循环体}

Break语句

break语句可以结束循环

Continue语句

跳过不符合条件的循环,结束当此循环的执行,开始下一次循环体的执行

代码块和变量的作用域

大括号括起开的就是代码块,代码块也叫体,可以嵌套

变量的作用域

代码块里使用外层代码块的变量

代码块里创建变量

不能在外层代码里使用内层的代码块变量,是否可以使用变量,也称作某个代码的可见性。也就是说,外层代码块创建的变量对内层代码块可见,内层的不对外层可见

内层命名空间不可以重复定义外层代码块的变量,但是可以使用外层代码块的变量

代码块无论嵌套多少层,都要遵守上述变量的可见性

理解作用域和作用空间

同一个命名空间中的变量不可以重名

为了避免变量名冲突,所以必须有命名空间

While语句

语法:

条件表达式的结果是一个boolean值,如果为true,则执行循环体,如果为Flase,则循环结束,可以嵌套

while (条件表达式){    while循环体}

do-while语句

至少执行一次

do{    while 循环体}while(条件表达式);

死循环(endless loop)

无法结束的循环(endless loop/infinite loop)

没有设置好结束条件,要充分考虑各种边界情况

switch语句

switch(用于比较的int值){case 目标1,对应一个if else(xxxx);case 目标2,不可以与别的case字句重复;default (对应最后的esle,可选);}

可以嵌套

switch语句中用于比较的值,必须是int类型

switch语句适用于有固定多个目标值匹配,然后执行不同的逻辑的情况

必须使用一个break语句显示的结束一个case语句,否则会一直执行下去

default子句是可选的,如果所有的case语句都没有匹配上,才会执行default中的代码

Java中的单行注释

以//为开始,到这一行结束都是注释内容

注释可以说任何内容

可以在一行的开始注释,也可以在程序后面添加,注释不会对程序有任何影响

新功能

生成规定范围内的随机数

Math.random()生成随机数

得到随机数,Java支持得到0到1之间的double类型随机数

标准输入:

Scanner in = new Scanner(system.in)

连接标准输入

in.nextLine()从命令行读取一行字符串

in.nextint()可以从命令行读取一个整数

import java,.util.Scanner;告诉程序这个Scanner这个类型在哪里

数组

数组是相同类型的变量的集合,所有元素的类型都一样

可以指定数组包含的元素的个数,最多为int的最大值个

元素有固定的顺序

每个元素都有一个固定的编号,称之为索引(index),从0开始递增,类型为int

可以像操作变量一样读写数组中的任何一个元素

创建和使用一个数组的语法

数组元素类型[] 变量名 = new 数组元素类型[数组长度]变量名[索引] 可以使用这个变量,可以读取,也可以给他赋值

变量和数组

重新认识基本类型的变量

变量的基本逻辑——有定才有变。对人来说,固定的是名字,变化的是对应得值,对于计算机来说,固定得是地址,变化的是值

理解计算机如何使用内存:

内存就是一堆白纸,只能通过页码编号访问,也就是所谓的内存地址

变量就是使用一个固定的地址加上对应的内存,计算机通过地址对变量进行赋值和访问。变量的名就是地址,变量的实就是值

理解数组的名与实

数组的实是一块地址连续的内存,就像是编号连续的白纸一样

数组的名,就是这个块连续内存的第一个内存地址数组的变量和基本变量一样,本身是个地址。但是与基本变量不一样的是,这个地址的值,是数组的名,也就是数组的第一个值

数组 = 数组变量+数组实体

数组变量[索引]就是再数组原有地址的基础上加上索引,获到想要的元素

所以索引是从0开始的,因为数组变量的地址就是数组第一个元素的地址,不需要加

数组的长度

数组变量.length可以获得数组的长度

数组创建之后,长度不可改变

数组索引过界和初始值

抛出IndexOutOfBoundException的异常

索引从0开始

数组每个元素都有初始值,初始值和类型有关。对于数字类型,初始值是0,对于boolean类型,初始值是false

让变量指向新的数组

数组变量可以指向新的数组实体。这时候,数组变量的值就是新的数组实体的地址了。这种数组变量的赋值操作,叫做让变量指向新的数组

如果没有别的数组变量指向原来的数组实体,也就是说,如果没有数组变量记得原来数组的地址,原来的数组实体就再也不可以访问了,好像消失了

对于非基本类型的变量,计算机都要通过这种“两级跳”的方式来访问,基本类型变量,一跳就可以

多维数组

创建一个二维数组,二维数组是一维数组的自然延申

类型 [][] 变量名 = new 类型[][]

原文地址:https://www.cnblogs.com/blamwq/p/12120428.html

时间: 2024-08-29 02:57:51

Java数据类型、语法和代码块的相关文章

java中c#中statc 静态调用不同之处、c#的静态构造函数和java中的构造代码块、静态代码块

1.java和c#静态成员调用的不同之处 static 表示静态的,也就是共享资源,它是在类加载的时候就创建了 java中   可以通过实例来调用,也可以通过类名.成员名来调用,但是一般最好使用类名.成员这个方式,因为静态成员是属于类的,并不是属于具体的对象 c#中     只能通过类名.成员调用,并不能 用实例来进行调用 2.c#的静态构造函数和java中的构造代码块.静态代码块 c# 静态构造函数的特点:        1)静态构造函数不需要手动调用,系统自动调用        2)静态构造

java学习教程之代码块

学编程吧java学习教程之代码块发布了,欢迎通过xuebiancheng8.com来访问 java中的代码块包括下面几种: 1.普通代码块 2.构造代码块 3.静态代码块 1.普通代码块很简单看下面这个例子: public class Test{ public static void main(String args[]){ { //此处就是普通代码块,普通代码块中的代码按顺序执行 System.out.println("hello"); } } } 2.构造代码块 public cl

java:synchronized 同步代码块

synchronized:利用上锁实现数据同步,避免多线程操作的情况下,数据出现异常. 当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行. 另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块. 在代码块前加上 synchronized关键字,则此代码块就成为同步代码块, 格式: synchronized(同步对象){ 需要同步的代码: } class MyThread implements Runnab

java中类的静态代码块、构造代码块、构造方法、静态成员的初始化顺序详解

一.描述 java中类的静态代码块.构造代码块.构造方法.静态成员的初始化顺序: 首先,在类加载时,为类中的静态成员变量分配内存空间,并为其赋予默认值(整数型为0,浮点型为0.0,布尔型为false,字符型为'\u0000',引用型为null): 其次,执行静态成员变量的显式初始化操作.静态成员的初始化方法有两种,其一为在声明的时候直接初始化,其二为使用静态代码块进行初始化, 这两种初始化方式会按照在类中的出现顺序来执行,而且只在类加载的时候执行一次. 再次,如果创建了类的对象,便会在堆中为类的

Java基础6:代码块与代码加载顺序

Java基础6:代码块与代码加载顺序 代码块:用{}包围的代码 java中的代码块按其位置划分为四种: 局部代码块 位置:局部位置(方法内部) 作用:限定变量的生命周期,尽早释放,节约内存 调用:调用其所在的方法时执行 public class 局部代码块 {@Testpublic void test (){   B b = new B();   b.go();}}class B {   B(){}   public void go() {       //方法中的局部代码块,一般进行一次性地调

Java之static静态代码块

Java之static静态代码块 构造代码块 使用{}包裹的代码区域,这里的代码区域特指位于class{}下面的而不是存在于其他type method(){}这类函数下面的代码区域 public class HelloA { /** ... */ { System.out.println("I'm A construct code block"); } } 构造函数代码块 构造函数代码块指的是构造函数中所包含的代码,类似className(){}中的代码块 public class H

java中的静态代码块,构造代码块,构造函数,普通代码块

java中的静态代码块,构造代码块,构造函数,普通代码块 静态代码块: 格式: public class Test1{ static{ System.out.println("这是一个静态代码块");  } } 说明: 1.静态代码块在类加载时也就是项目启动时运行并且只运行一次相当于main函数,有多个静态代码块从上往下依次执行,他是一种主动运行的机制. 2.静态代码块不能存在于任何方法中 构造代码块 格式: public class Test2{ { System.out.print

Java中的构造代码块

代码块 ----a静态代码块 ----b构造代码块 ----c普通代码块 执行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. a.静态代码块: 静态代码块在加载该类的时候执行,且只执行一次! 1 class Test{ 2 public static void main(String args[]) 3 { 4 Demo d1=new Demo();Demo d2=new Demo(); 5 6 } 7 } 8 9 class Demo{ 10 static{

Objective-C语法之代码块(block)的使用

代码块本质上是和其它变量相似.不同的是,代码块存储的数据是一个函数体.使用代码块是,你能够像调用其它标准函数一样,传入參数数,并得到返回值. 脱字符(^)是块的语法标记.依照我们熟悉的參数语法规约所定义的返回值以及块的主体(也就是能够执行的代码).下图是怎样把块变量赋值给一个变量的语法解说: 依照调用函数的方式调用块对象变量就能够了:int result = myBlock(4); // result是 28 1.參数是NSString*的代码块 void (^printBlock)(NSStr