一、Java数据类型

1、byte 字节型

1byte = 8bit 表示数范围:-2^7~2^7-1(-128~127);

2、short 短整型

2 byte = 16bit 表示数范围:-2^15~2^15-1(-32788~32787);

3、int 整型

4byte =32bit 表示数范围:-2^31~2^31-1(-2147483648~2147483647);

4、long 长整型

8byte = 64 bit 表示数范围:-2^63~2^63-1

5、char 字符型

2byte =16bit 表示数范围:0~2^16(0~65535)

既是字符,又是数字;使用特定字符编码,表示不同的字符;表示方式如下:

char c1 ='A';    c1 ='B';    c1 ='@';   c1 ='中‘;

6、字符编码:

ASCII码  美国 1byte中7bit 表示数范围:0~127

十进制      48        49        65         66         97          98

十六进制   ox30   ox31     ox41      ox42      ox61     ox62

字符         ‘0’        '1'        ‘A’           ‘B’          ‘a’        'b'

ISO8859-1(latin-1)  1byte中8bit 表示数范围:0~256

GBK编码  2byte  16bit

UTF-8编码是Unicode编码的一种,目前项目中用得多。英文 1byte存储一个字符;中午 3byte存储一个字符。

Java中的char使用Unicode编码,2byte存储,65536种数字对应不同的字符。全球化支持大多是国家的字符。

7、char类型写法:2byte =16bit

char c1 =‘A’;

char c2 ='\u0041’;

Unicode表达法:‘\u四位十六进制’。

技巧:获取中文Unicode jdk\bin,jdk提供了native2ascii。exe

步骤:

1)在d:\新建1.txt——打开编辑——中国——保存;

2)d:\>native2ascii 1.txt   2.txt,生成2.txt文件;

3)打开d:\的2.txt得到编码。

8、区分字符和字符串

char c1 = ‘a’; 只能写一个字符 ,基本类型;

String s1 =“abc”;任意写多个字符,引用类型。

9、float 单精度浮点型,有精度误差,二进制数无法精确表示0.1;

4byte = 32bit,能够表示2.0E30,科学计数法(2.0*10^30);

底层存储:高3个字节保存数据,底1个字节保存位权;

00000000 00000000 00000010 00011110

10、double双精度浮点型,有精度误差,二进制数无法精确表示0.1;

8byte =64bit

底层存储:高6个字节保存数据,底2个字节保存位权;

11、boolean布尔型,最多1byte中的1bit;Java:只有两个字面值true、false。

用途:表示两种状态,常用于条件判断;

boolean flag = true;//表示好天气

if(flag){

打印出去玩;

}else{

打印继续学习;

}

练习:求出9的99次方,得到精确的结果。

基本类型:int、long、double;引用类型:String、Scanner、System等;

使用java.math.BigInteger类,大整数类;内存有多大,就能表示多大。

12、引用数据类型(主要关注底层存储结构)又称为复杂类型、对象类型

底层存储:引用变量 —>内存对象

按照表现形式分5种:

类class、接口interfac、数组String[]/int[]、枚举、标注

13、计算机主要硬件设备:

磁盘(程序)    内存(进程)    CPU(指令)

JVM内存的三大区域:

1)Stack栈区:存放局部变量(临时变量)—定义在方法中的变量;

栈是一种先进后出的数据结构。FILO(First In,Last Out)

2)Heap堆区:存放对象

3)Code方法区:存放类的信息、静态资源

以class为例,说明引用类型的结构。

(1)JDK中已定义的引用类型class

java.lang.String 类  字符串类

java.lang.System类  系统类

java.lang.Integer类  int包装类

java.lang.Long类 long包装类

java.until.Scanner类  扫描器类

java.math.BigInteger类  大整数类

(2)自定义引用类型calss

类是对象的一种抽象、模板、蓝图        水果   动物

对象是类的具体实例(具体化)       某个苹果 具体个体

练习:

设计一个学生类,并表示成一些对象

基本思路:需要表示学生数据,找学生类,创建对象,赋予属性值,使用方法功能;

(1)定义出一个类,类名Student

package day04;

public class Studeng{//类体

//有什么?数据抽象、属性

String name;

int age;

char hobby;

//会什么?功能抽象、方法

//学习 study,参数course表示课程的名称

public void  study (String course){

System.out.println(name+"学习"+course);

}

}

(2)使用Student类创建对象,调用方法;

psckage day04;

public class TestStudent{

public static void main(String[] args){

Student stu1 = new Student();

stu1.name = "tom";

stu1.age = 29;

stu1.study("JavaSE");//调用方法

}

}

15、void无返回值类型

只能用在方法返回值类型,表示无需返回结果

16、数据类型的转换

1)自动类型转换

(1)常数在表数范围内能够自动转型

byte b1 = 123;  //int->byte [-128,127];

char c1 = 65;    //int->char  [0,65535];

char c2 = 'A' + 1;//int->char;

(2)范围小的自动向范围大的转型

byte->short(2)->int(4)->long(8)->float(4)->double(8)

char(2)

int n1 ='A';       //char->int  65

double d1 =123;  //int->double

double d2 = 123.5 +5;  //double + int,自动类型提升为double(就大);

(3)引用类型子类能够自动转化为父类

java.lang.Object类,是所有类的父类;

Student stu1 =new Student();

Object obj = stu1;  //Student ->Object

(4)基本类型可以和包装类型之间互相转换,Java为8种基本类型提供了对应的包装类。

原因:Java什么都是对象,基本类型也想变成对象?

包装类都在Java.jang包下:几乎都是首字母大写

基本类型:byte   short       int      long     char       float   double   boolean

包装类:   Byte   Short   Integer  Long   Chatcter   Float   Double   Boolean

int n1 = 123;

Integer in1 = n1;  //int ->Integer 自动封箱

int n2 = in1;  //Integer ->int  自动拆箱

2)强制类型转换

除了自动转型外,都使用强制转型;

语法:(数据类型)数据、变量、表达式、方法调用。。。

规则:保留低位字节,舍去高位字节。

128的二进制补码:32位:00000000 00000000 00000000 10000000

byte:8位:10000000

byte n1 = (byte)128;  -128

byte b1 =  (byte)128;

二、运算符和表达式

运算符:operator       + - * /  =

表达式:expression    1+2   a=1;

将数据使用运算符进行合理连接,形成表达式。实现实际业务操作的表达。

运算符(学习目标:先了解功能,后续不断应用)

赋值运算符Assignment operators

= 、*=、/=、%=、    += 、-=、《=、》=、  >>>= 、&=、^=、|=、

比较运算符:>、>=、<、<=、instanceo

判断是否相等运算符:==、!=

算术运算符:+、-、*、/、%(取余数)

移位运算符:>>、<<、>>>

位运算:&、|、^、~  

逻辑运算符:&&与、||或、&与 、|或

条件运算符:?:(三目运算符_?_:_)

其他运算符:++、--、(<data-type>

优先级:a+b*c、(a+b)*c;技巧:使用()可以提高优先级

结合律:相同优先级考虑

a+b-c    一般从左->右

从上往下,优先级递减:

1、

():提升优先级和提高可读性——(a+b)/(c-d)

 []:取数组小标——a[0]、a[1]...

 . : 取成员运算符   成员(属性、方法),可以理解为stu1的age——stu1.age+1      stu1.study("JabaSE")

++:自增1运算符——

int a =1;

//前++,先自加1,再取值   a = a+1;   再取a

System.out.println(++a);  //2

System.out.println(a);     //2

//后++,先取值,再自加1——先取a打印,再a = a+1;

System.out.println(a++);  //2

System.out.println(a);     //3

--:自减1运算符

&:按位与、逻辑与

^:按位异或;”同0异1“;

|:按位或;”有1则1,全0则0“;

&&:逻辑与(短路与);

条件1 && 条件2

如果条件1为true,还需判断条件2

如果条件2为true,结果为true

如果条件2为false,结果为false

如果条件1为false,无需判断条件2,结果为false

||:逻辑或(短路或 )

条件1 || 条件2

如果条件1为true,还需判断条件2

如果条件2为true,结果为true

如果条件2为false,结果为false

如果条件1为true,无需判断条件2,结果为true

用途:具体问题具体分析

&&:能够简化操作,提高效率(性能)

&:当两个条件都需要判断是使用(条件兼顾)

<boolean_axpr>?<expr1>:<expr2>:条件运算符:(三目运算符)

条件表达式?条件为真的结果:条件为假的结果

写一个程序,求出a和b的最大值

int a = 3;

int b = 5;

int max = a > b ? a : b;

打印max 5

赋值运算符:特点优先级最低

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

double d1 = 1+2/(a * c - b) + 100;

int a = 5;

a *= 6; //近似等价于 a = a *6;

byte b1 =1;

byte b2 =2;

byte b3 =b1 + b2;//编译无法通过,提升为int计算,需要强制类型转换;

b1 +=  b2;  //可以,近似b1 = b1 + b2 不会提升为int。

三、Java方法

3W1H:

What?是什么?核心概念——> Why?为什么使用,好处——> Where?应用领域——> How?如何应用?程序实践

1、含义:

Java的方法method,在其它语言中称为函数function。方法表示一段固定的代码,表示固定的业务逻辑;便于反复使用,易于维护。

数学的函数(function):y = f(x) = 2 * x + 1;

可以提高软件::可复用性、易维护性。

2、方法的定义和使用

(1)方法的定义(设计)

方法三要素:方法名、参数表、返回值类型;

方法只能在类体中定义,并且不能嵌套定义,方法是并列在类提中的。

具备方法体:表示方法业务代码

1)方法的声明(签名)三要素:

public static int add(int a, int b)

2)方法的实现(方法体){}:

public static int add(int a, int b){

return a + b;

}

(2)方法的使用(调用call或invoke)

原则:从哪里调用,就从哪里返回

package day05;

public class TestAdd{

public static void main(String[] args){

int a = 3;

int b = 5;

//int c = a + b;

int c = add(a,b);    //方法的调用。实际参数

int d = add(7,8);

system.out.println("C=" + c);  //8;

}

public static int add(int a ,int b){ //形式参数,临时参数,是实际参数的副本(拷贝)用完即释放

return a + b;

}

1、Stack区:局部变量分配空间

max

b=5

a=3

2、将实参a、b拷贝给形参a、b,比较形参;

b=5

a=3

max

b=5

a=3

3、释放形参后,赋值给max=5;

max

b

a

4、释放所有空间

 

Java基础概念1的更多相关文章

  1. Java基础概念语法

    Java基础概念语法 注释 单行注释 //行注释说明 多行注释 /* 多行注释说明 */ 文档注释 /** *@author 程序的作者 *@version 源文件的版本 *@param 方法的参数说 ...

  2. 2016第20周四java基础概念

    简单的说JDK=JRE+Java编译器.调试器.工具类库等:JRE=JVM(类似于jre目录下的bin)+必要运行的类库(类似于jre目录下的lib) JVM:Java Virtual Mechina ...

  3. java基础概念整理综合 及补充(jdk1.8)

    2018 java基础 笔记回顾摘要 一 1,html 与 注释: <!--   -->  注释不能嵌套 代码都得有注释. 2,空格符:   3,css选择的优先级: id选择器 > ...

  4. 你猜这个题输出啥?-- java基础概念

    最近在看java编程思想,大部分内容都觉得没啥意思,但是突然看到一个基本概念(似乎都忘了),于是写了测试题,我想这辈子也不会忘这个概念了. 题目如下: public class Suber exten ...

  5. Java 学习(2):java 基础概念

    Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 基础语法: 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.以 ...

  6. JAVA基础概念(三)

    JAVA方法入参和返回类型 方法入参 基础数据类型 引用数据类型 修饰符 返回类型 方法名(参数类型 参数名,参数类型 参数名...){//方法体return} 方法返回类型 return xxx 具 ...

  7. JAVA基础概念(一)

    一.JAVA标识符 标识符就是用于给 Java 程序中变量.类.方法等命名的符号.如图标黄部分: 使用标识符时,需要遵守几条规则: 1.  标识符可以由字母.数字.下划线(_).美元符($)组成,但不 ...

  8. java基础概念经典题目汇集

    1.下面是People和Child类的定义和构造方法,每个构造方法都输出编号.在执行new Child("mike")的时候都有哪些构造方法被顺序调用?请选择输出结果 ( ) cl ...

  9. java基础概念

    jre是java运行环境 jdk是java开发工具包 java源文件←编译class字节码文件←运行结构

随机推荐

  1. java选择结构

    /**选择结构*/ public class Demo06{ public static void main(String []args){ // if...else...型 String name ...

  2. ASP.NET没有魔法——ASP.NET 身份验证与Identity

    前面的文章中为My Blog加入了文章的管理功能(ASP.NET没有魔法——ASP.NET MVC使用Area开发一个管理模块),但是管理功能应该只能由“作者”来访问,那么要如何控制用户的访问权限?也 ...

  3. WebService调用(基于KSOAP2)

    public static boolean getData(String param) { //WebService服务器地址 String SERVICE_URL = "http://22 ...

  4. PhiloGL学习(3)——程序员的法宝—键盘、鼠标

    前言 上一篇文章中介绍了如何让对象动起来,本文介绍如何让场景响应我们的鼠标和键盘以控制场景的缩放及对象的转动和移动等. 一. 原理分析 有了上一篇文章的基础,我们已经知道了如何让场景和对象动起来.本文 ...

  5. Golang访问Redis初体验

    go语言的client在redis官网上有很多l客户端,个人感觉redigo使用起来更人性化,重要的是源代码结构很清晰,重要的是支持管道.发布和订阅.连接池等等,所以我选择redigo作为尝试. 1. ...

  6. iOS之 重绘机制

    最近在看Core Animation , 今天来谈谈CALayer 和 UIView 中的重绘的一些认识: 我们都知道UIView里面有个成员layer,利用这个这个layer我们可以设置一些圆角,阴 ...

  7. x86-64栈帧中的“红色区域” red zone of stack frame on x86-64

    前几天看System V AMD64 ABI标准的时候发现栈帧的顶部后面有一块"red zone",在学cs:app3e/深入理解操作系统的时候并没有遇到这个,总结一下. 引用标准 ...

  8. NFS存储服务部署

    第1章 NFS介绍 1.1 NFS服务内容的概述 □ RPC服务知识概念介绍说明,以及RPC服务存在价值(必须理解掌握) □ NFS服务工作原理讲解(必须理解掌握) □ NFS共享文件系统使用原理讲解 ...

  9. AngularJS学习篇(十一)

    AngularJS 表格 ng-repeat 指令可以完美的显示表格. <!DOCTYPE html> <html> <head> <meta charset ...

  10. 轻松驾驭Tomcat

    Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选.对于一个初学者来说,可以这样 ...