java中单引号和双引号区别和用法
区别2:单引号引的数据一般是char类型的;双引号引的数据 是String类型的。
区别3:java中单引号里面只能放一个字母或数字或符号;java中的双引号里面是0到多个字符构成。所以字符可以直接转换成字符串。字符串需要使用charAt(n) 来获取第几个字符。
char定义时用单引号,只能有一个字母,数字。char c='c';而String用双引号,可以是一个,也可能是多个字母,汉字等。就是所谓的字符串。String s="adsaf";
char只是一个基本类型,而String 可以是一个类,可以直接引用。比如char c='c';不能直接对c调用方法。String s="abc"; 这时可以调用s.charAt(0);等方法,因为String是类,这是就是对象的调用了。
一.java 基本语法--运算符
java中常用的算术运算符是:+加、-减、*乘、/除、%取模
其实%运算可以得到两个数的余数。
一.算术运算符:++自加、--自减。
这两个运算符比较特殊,请大家思考一下:
int a=90;
a++; 等同于(a=a+1)
这时a等于?91
int b=89;
b--; 等同于(b=b-1)
这时b等于?88
inta=56;
intb=a++;
System.out.println(b);56
System.out.println(a);57
int b=++a;相当于a=a+1再将b=a;
int b=a++;相当于b=a再将a=a+1。
算术运算符:+=左加.-=左减./=左除.%=左取模
请大家看看几个案例,就明白了:
inta=90;
a+=90; (相当于a=a+90)
请问,a现在等于多少?180
float b=89.7f;
b+=a; (相当于b=b+a)
请问,b现在等于多少?269.7
int a=56;int b=90;
a-=34;b%=a; (相当于a=a-34,b=b%a)
System.out.println(b);2
System.out.println(a);22
运算符
二.关系运算符
1、==等于;2、>大于;3、<小于;4、>=大于等于;5、<=小于等于;6、!=不等于
案例:
/*请编写一个程序,该程序可以接收两个数
(可以是整数,也可是小数)并判断两个数是大于?小于?还是等于? */
package day2;
import java.io.*;
import java.io.InputStreamReader;
public class shuru {
public static void main(String []args){
try{
//输入流从键盘接收数
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
//给出提示
System.out.println("请输入第一个数");
//从控制台读取一行数据
String a1 = br.readLine();
System.out.println("请输入第二个数");
String a2 = br.readLine();
//把String转float
float num1 = Float.parseFloat(a1);
float num2 = Float.parseFloat(a2);
if(num1>num2){System.out.println("第一个大");}
if(num1==num2){System.out.println("相等");}
if(num1<num2){System.out.println("第二个大");}
}catch(Exception e){
e.printStackTrace();
}
}
}
三.运算符--逻辑运算符
用于判断逻辑关系的运算符
1、&&与; 2、||或; 3、!非
&&与的运算关系,真真为真,其它都为假。
||或的运算关系,假假为假,其它都为真。
!非的运算关系,真取假,假取真
二.java基本语法----三大流程控制
1顺序控制
听其名而知其意,让程序可以顺序的执行。
请大家看个案例[demo11.java]:
int a=7;
System.out.println("a="+a);
System.out.println("hello!");
a++;
System.out.println("a="+a);
System.out.println("0(∩_∩)0");
a++;
System.out.println("a="+a);
2分支控制
让程序有选择的执行,分支控制有三种:
1、 单分支;2、双分支;3、多分支a
1、单分支语法:
if(条件表达式){
语句;
}
2、双分支语法:
if(条件表达式){
语句;
}else{
语句;
}
3.1、多分支语法:
if(条件表达式){
语句;
}else if(条件表达式){
语句;
}else if(条件表达式){
语句;
}else{
语句;
}
3.2、多分支语法:
switch(条件表达式){ //***条件表达式数据类型,就和case常量表达式一致,否则就会报错。
case常量1:
语句1;
//语句1至break中相当于{}可以加入相应程序代码
break; //break,表示跳出switch语句
case常量2:
语句1;
break;
...
case常量n:
语句n;
break;
default:
语句;
break;
}
*****:switch中的可用数据类型主要是:允许byte,short,int,char,enum等
eg:编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出“你年龄大于18,要对自己的行业负责,送入监狱”。如果该同志的年龄大于10岁并且小于等于18,则输出“你的年龄也不小了,把你送少管所”。其它情况,则输出“小孩子,下次注意”。
package day3;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class demo2 {
public static void main(String[] args) {
try{
InputStreamReader isr =new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
System.out.println("输入年龄");
String a1 = br.readLine();
float num1 = Float.parseFloat(a1);
if(num1>18){
System.out.println("你年龄大于18,要对自己的行业负责,送入监狱");
}
else if(num1>10 && num1<=18){
System.out.println("你的年龄也不小了,把你送少管所");
}else{
System.out.println("小孩子,下次注意");
}
}catch(Exception e){
e.printStackTrace();
}
}
}
对比switch与if语句在执行分支语句的区别。
***switch分支语句不支持判断类型即boolean类型,switch只支持byte,short,int,char,enum等数据类型
练习:
1、双分支控制作业.
编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出“你年龄大于18岁,要对自己的行为负责!”否则,输出“你的年龄不大这次放过你了”
package day3;
import java.io.*;
import java.io.BufferedReader;
public class demo01 {
public static void main(String []args){
try{
//接收从键盘输入的数
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
//提示
System.out.println("请输入年龄");
//从控制台读取一行数据
String a1 = br.readLine();
//将string转float
float num1 = Float.parseFloat(a1);
if(num1<18){
System.out.println("你的年龄是"+num1);
}else{
System.out.println("你年龄大于18,要为自己的行为负责!");
}
}catch(Exception e){
e.printStackTrace();
}
}
}
2.多分支控制:
编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出“你年龄大于18,要对自己的行业负责,送入监狱”。如果该同志的年龄大于10岁并且小于等于18,则输出“你的年龄也不小了,把你送少管所”。其它情况,则输出“小孩子,下次注意”。
package day3;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class demo2 {
public static void main(String[] args) {
try{
InputStreamReader isr =new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
System.out.println("输入年龄");
String a1 = br.readLine();
float num1 = Float.parseFloat(a1);
if(num1>18){
System.out.println("你年龄大于18,要对自己的行业负责,送入监狱");
}
else if(num1>10 && num1<=18){
System.out.println("你的年龄也不小了,把你送少管所");
}else{
System.out.println("小孩子,下次注意");
}
}catch(Exception e){
e.printStackTrace();
}
}
}
3.多分支控制:
请编写一个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,g
a表示星期一,b表示星期二...根据用户的输入显示相应的信息,要求使用switch语句完成。
package day3;
import java.io.*;
import java.util.Scanner;
public class demo3 {
public static void main(String[] args){
try{
//根据用户输入判断今天星期几
//请编写一个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,g
//a表示星期一,b表示星期二 …
//根据用户的输入显示相应的信息.要求使用 switch 语句完成
/*思路分析
1. 接收一个字符 , 创建Scanner对象
2. 使用switch 来完成匹配,并输出对应信息
代码*/
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入一个字符(a-g)");
char c1 = myScanner.next().charAt(0);
switch(c1){
case 'a':
System.out.println("周一");
break;
case 'b':
System.out.println("周二");
break;
case 'c':
System.out.println("周三");
break;
case 'd':
System.out.println("周四");
break;
case 'e':
System.out.println("周五");
break;
case 'f':
System.out.println("周六");
break;
case 'g':
System.out.println("周日");
break;
default:
System.out.println("请输入a-g");
}
}catch(Exception e){
e.printStackTrace();
}
}
}
3循环控制
听其名而知其意,就是让你的代码可以循环的执行。
循环控制有三种
1、for循环语法:
for(循环初值;循环条件;步长){
语句; //循环体
}
2、while循环语法:
while(循环条件){
语句; //循环体
}
特别说明:while循环是先判断在执行语句。
3、do
while循环 语法:
do{
语句; //循环体
}while(循环条件);
特别说明:do while循环是先执行,再判断。
eg:写一个三角形
package day3;
//请编写一个程序,可以接收一个整数,表示层数,打印出金字塔一半
public class demo4 {
public static void main(String []args){
int lay =4;
//lay表示层数
for(int i=1;i<=lay;i++){
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println("\n");
}
}
}
注意System.out.print()和System.out.println()的区别
eg:金字塔
package day3;
public class demo5 {
public static void main(String []args){
int lay = 4;
for(int i=1;i<=lay;i++){
//规律
//1=>3 2=>2 3=>1 4=>0 空格的规律
for(int k=1;k<=lay-i;k++){
System.out.print(" ");
}
//print *
//1=>1 2=>3 3=>5 4=>7*的规律
for(int j=1;j<=(i-1)*2+1;j++){
System.out.print("*");
}
System.out.println();
}
}
}
eg:镂空金字塔
public class demo6{
public static void main(String []args){
int lay=10;//表示有多少层
for(int i=1;i<=lay;i++){
//找出规律
//1->32->2 3->1 4->0找出空格
for(int k=1;k<=lay-i;k++){
System.out.print("");
}
//打印*
//1->12->3 3->5 4->7找出星的规律
for(int j=1;j<=(i-1)*2+1;j++){
//判断该层是否是顶层或者是底层
if(i==1||i==lay){
System.out.print("*");
}else{
//如果是第一个*
if(j==1 || j==(i-1)*2+1){
System.out.print("*");
}else{
System.out.print("");
}
}
}
System.out.println();//换行
}
}
}
eg:空心菱形
public class Demo7{
public static void main(String []args){
int lay=4;//菱形上半部行数
for(int i=1;i<=lay-1;i++){//判断循环上半部分
for(int k=1;k<=lay-i;k++){//找行内*号前输出空格
System.out.print("");
}
for(int j=1;j<=(i-1)*2+1;j++){//找行内输出星的位置
if(j==1||j==(i-1)*2+1){ //判断行最小长度和最大长度,并在最小长度和最大长度上输出*号,行内输入出空格。
System.out.print("*");
}else{
System.out.print("");
}
}
System.out.println();//换行
}
for(int i=1;i<=lay;i++){ //判断循环菱形下半部分
for(int k=1;k<=i-1;k++){//判断循环找*号前要输出空格处
System.out.print(" ");
}
for(int j=1;j<=(lay-i)*2+1;j++){//判断循环行长度
if(j==1||j==(lay-i)*2+1){//判断行最小长度和最大长度,并在最小长度和最大长度上输出*号,行内输入出空格。
System.out.print("*");
}else{
System.out.print("");
}
}
System.out.println();//输出换行
}
}
}
eg:实心菱形
public class Demo104{
publicstatic void main(String []args){
intlay=4;//菱形上半部行数
for(inti=1;i<=lay-1;i++){ //判断循环上半部分
for(intk=1;k<=lay-i;k++){//找行内*号前输出空格
System.out.print("");
}
for(intj=1;j<=(i-1)*2+1;j++){//找行内输出星的位置
System.out.print("*");
}
System.out.println();//换行
}
for(inti=1;i<=lay;i++){ //判断循环菱形下半部分
for(intk=1;k<=i-1;k++){//判断循环找*号前要输出空格处
System.out.print("");
}
for(intj=1;j<=(lay-i)*2+1;j++){//判断循环行长度
System.out.print("*");
}
System.out.println();//输出换行
}
}
}