本文目录一览:
- 1、怎样用java的正则表达式匹配这样的网址
- 2、急急急,小弟急求一个用java编写的应用程序,求大神,重谢
- 3、java代码解析
- 4、JAVA多线程 编程题两个案例,不会写,求大神写出代码,万分感谢,多线程还没学。
- 5、如何利用Java语言实现消息推送到手机app
- 6、高分:求案例代码:java Socket 加请求参数,访问http服务端,并打印返回的数据!
怎样用java的正则表达式匹配这样的网址
Java中正则表达式匹配的语法规则:以下是整理出来的Java下运用正则表达式实现匹配的程序案例,代码如下:package org.luosijin.test;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * 正则表达式 * @version V5.0 * @author Admin * @date 2015-7-25 */public class Regex { /** * @param args * @author Admin * @date 2015-7-25 */ public static void main(String[] args) { Pattern pattern = Pattern.compile(“b*g”); Matcher matcher = pattern.matcher(“bbg”); System.out.println(matcher.matches()); System.out.println(pattern.matches(“b*g”,”bbg”)); //验证邮政编码 System.out.println(pattern.matches(“[0-9]{6}”, “200038”)); System.out.println(pattern.matches(“//d{6}”, “200038”)); //验证电话号码 System.out.println(pattern.matches(“[0-9]{3,4}//-?[0-9]+”, “02178989799”)); getDate(“Nov 10,2009”); charReplace(); //验证身份证:判断一个字符串是不是身份证号码,即是否是15或18位数字。 System.out.println(pattern.matches(“^//d{15}|//d{18}$”, “123456789009876”)); getString(“D:/dir1/test.txt”); getChinese(“welcome to china,江西奉新,welcome,你!”); validateEmail(“luosijin123@163.com”); } /** * 日期提取:提取出月份来 * @param str * @author Admin * @date 2015-7-25 */ public static void getDate(String str){ String regEx=”([a-zA-Z]+)|//s+[0-9]{1,2},//s*[0-9]{4}”; Pattern pattern = Pattern.compile(regEx); Matcher matcher = pattern.matcher(str); if(!matcher.find()){ System.out.println(“日期格式错误!”); return; } System.out.println(matcher.group(1)); //分组的索引值是从1开始的,所以取第一个分组的方法是m.group(1)而不是m.group(0)。 } /** * 字符替换:本实例为将一个字符串中所有包含一个或多个连续的“a”的地方都替换成“A”。 * * @author Admin * @date 2015-7-25 */ public static void charReplace(){ String regex = “a+”; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(“okaaaa LetmeAseeaaa aa booa”); String s = matcher.replaceAll(“A”); System.out.println(s); } /** * 字符串提取 * @param str * @author Admin * @date 2015-7-25 */ public static void getString(String str){ String regex = “.+/(.+)$”; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(str); if(!matcher.find()){ System.out.println(“文件路径格式不正确!”); return; } System.out.println(matcher.group(1)); } /** * 中文提取 * @param str * @author Admin * @date 2015-7-25 */ public static void getChinese(String str){ String regex = “[//u4E00-//u9FFF]+”;//[//u4E00-//u9FFF]为汉字 Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(str); StringBuffer sb = new StringBuffer(); while(matcher.find()){ sb.append(matcher.group()); } System.out.println(sb); } /** * 验证Email * @param email * @author Admin * @date 2015-7-25 */ public static void validateEmail(String email){ String regex = “[0-9a-zA-Z]+@[0-9a-zA-Z]+//.[0-9a-zA-Z]+”; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(email); if(matcher.matches()){ System.out.println(“这是合法的Email”); }else{ System.out.println(“这是非法的Email”); } }}
急急急,小弟急求一个用java编写的应用程序,求大神,重谢
//代码是楼上的,帮你排了一下版。
public class Account {
private int id;
private double balance;
private double annuallnterestRate;
private Date dateCreated;
public Account() {
this.id = 0;
this.balance = 0;
this.annuallnterestRate = 0;
this.dateCreated = new Date();
}
public Account(int id, double balance) {
this.id = id;
this.balance = balance;
this.dateCreated = new Date();
}
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public double getBalance() {
return this.balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public double getAnnuallnterestRate() {
return this.annuallnterestRate;
}
public void setAnnuallnterestRate(double annuallnterestRate) {
this.annuallnterestRate = annuallnterestRate;
}
public Date getDateCreated() {
return this.dateCreated;
}
public double getMonthlyInterestRate() {
double monthlyInterest = java.lang.StrictMath.pow(
this.annuallnterestRate, 1.0 / 12) – 1;
return monthlyInterest;
}
public String withdraw(double amount) {
this.balance = this.balance – amount;
return “withdraw success”;
}
public String deposit(double amount) {
this.balance = this.balance + amount;
return “deposit success”;
}
public static void main(String[] args) {
Account account = new Account(1122, 20000.00);
account.setAnnuallnterestRate(0.045);
account.withdraw(2500.00);
account.deposit(3000.00);
System.out.println(account.getBalance());
System.out.println(account.getMonthlyInterestRate());
System.out.println(account.getDateCreated());
}
}
java代码解析
一楼的说的够全面了,不过稍有误解.
再来表示抱歉,我对编程语言中的中文名词非常不了解,所以如果以下的回复对你的阅读或者理解造成困难,请见谅.
1.首先,要明白这个问题的答案,需要了解call (pass) by value 和 call (pass) by reference 的区别.简单来说:
call by value通常是复制这个parameter的值去另外一块内存里,然后传给function, 所以在method/function里边对这个变量的所有变更,实际上都是对复制过来的镜像进行操作,不会对原本的variable有任何影响.
call by reference是将parameter的reference传给function,简单点理解就是直接把variable传给function.所以说这个variable的值是可以被function改变的.这个用法在c/c++中非常常见,用法是variable_name.
2.再来,在Java里边,你可以很简单的理解为: Java中只有call by value, 也就是说,所以所有传给function的parameter本身都不会被改变. (这是最简单直白的理解,当然也有另一种常从sun的人那边听到的说法:Java是call by value + call by reference by value)
3.那么现在的问题就是为什么第二个结果是2了. 首先说一下sun官方的解释: 对于reference type在作为parameter/argument的时候,也是call by value, 但是在你拥有足够权限时(比方说那个变量是public的, 不是final的等等各种符合的情况),可以修改这个object中fields的值(也就是属于这个object(严谨点讲是an instance of the object) 内部的变量, 在你的例子中, ko 里边的 a 就是一个field, 所以update(ko)会使ko.a变成2).
4.如果你是一个有过c/c++学习经验的人或者你以上的解释很难理解,以下这种说法或许更适合你 (当然了,这只是大多包括我在内有c经验的人的一种理解方式)
这里可以引入一个新的概念,pointer. 这是一种比较特殊的变量,它内部所储存的东西,其实只是另外一个变量的内存地址. 如果对内存没有概念,你可以把它简单理解为是风筝的线轴,虽然看它本身看不出什么端倪,但是顺着摸过去总会找到风筝,看到它是什么样子. 以pointer方式理解Java的人,通常会说: Type variable = new Type(); 这个过程中,最后生成的这个variable其实就是一个pointer,而不是instance本身.
在Java中, 有c/c++经验的人通常认为Java是call by value.同时,当一个变量用在储存reference type的时候,实际上储存的是它的pointer,这也一样可以解释为什么ko.a会有2这个结果,因为虽然pointer被传到function里边时,本身是call by value,无法被改变.但这并不影响function本身对这个pointer指向的object的内容做任何改变. 当然,再次声明,这只是一种帮助有c/c++经验的人理解的方法. Sun本身严正声明Java里边没有pointer这个东西的存在.
5. 再来解释一下为什么说楼上所说的(或者说楼上引用的)理解略有偏差.
引用”我们上面刚学习了JAVA的数据类型,则有:值类型就是按值传递的,而引用类型是按引用传递的” 这句话很明显的有两点错误. 第一点,如果我上面所说的,Java是没有call by reference的.
第二点,暂且假设Java里边是有call by reference的, 这句话依然不成立.
Java中的变量有两种类型: primitive types 和 reference type.
primitive type包括byte, short, int, long, char, boolean, float和double.
而这8种之外的所有的,都是reference type.
下面是一段对你的贴上来的code的一点延伸,希望可以帮助你更好的理解Java中的argument / parameter到底是如何运作的.
public class Test {
public static void main(String[] args) {
int a = 1;
Koo koo = new Koo();
Object o = new Integer(1);
Koo newKoo = new Koo();
update(a);
update(koo);
update(o);
update(newKoo);
newUpdate(newKoo);
System.out.println(a);
System.out.println(koo.a);
System.out.println(o);
System.out.println(newKoo.a);
}
static void update(int a) {
a++;
}
static void update(Koo koo) {
koo.a++;
}
static void update(Object o) {
o = (int) (Integer.parseInt(o.toString()) + 1);
}
static void newUpdate(Koo koo) {
koo = new Koo();
}
}
class Koo {
int a = 1;
}
/*
o = (int) (Integer.parseInt(o.toString()) + 1); 这一行中的(int)纯粹是多余的,是否有这个casting对code本身没有任何影响. 如果你高兴也可以用
o = new Integer(Integer.parseInt(o.toString()) + 1);
或者干脆
o = Integer.parseInt(o.toString()) + 1;
*/
以上这些code运行之后会得到1 2 1 2的结果. 后面两个结果可以很好的说明, 即使对objects (reference type variables) 来看, Java所应用的也并不是call by reference. 否则的话,以上code运行结果应该是1 2 2 1
希望你可以真正理解这个新的例子中,产生1212这个结果的原因,从而对Java中的arguments有一个系统全面的认识.
图片是相关资料的链接,知道里貌似不能加网址
JAVA多线程 编程题两个案例,不会写,求大神写出代码,万分感谢,多线程还没学。
/*
class A extends Thread
{
public void run()
{
try
{
Thread.sleep(1000);
}catch(Exception e)
{
System.out.println(“A ERROR!”);
}
System.out.println(“AAAA”);
}
}
class B extends Thread
{
public void run()
{
try
{
Thread.sleep(2000);
}catch(Exception e)
{
System.out.println(“B ERROR!”);
}
System.out.println(“BBBB”);
}
}
class C extends Thread
{
public void run()
{
try
{
Thread.sleep(3000);
}catch(Exception e)
{
System.out.println(“C ERROR!”);
}
System.out.println(“CCCC”);
}
}
public class Test_1
{
public static void main(String[] args)
{
A a = new A();
B b = new B();
C c = new C();
a.start();
b.start();
c.start();
}
}*/
public class Test_1
{
public static void main(String[] args)
{
A a = new A();
B b = new B();
C c = new C();
Thread ta = new Thread(a);
Thread tb = new Thread(b);
Thread tc = new Thread(c);
ta.start();
tb.start();
tc.start();
}
}
class A implements Runnable
{
public void run()
{
try
{
Thread.sleep(1000);
}catch(Exception e)
{
System.out.println(“A ERROR!”);
}
System.out.println(“AAAA”);
}
}
class B implements Runnable
{
public void run()
{
try
{
Thread.sleep(2000);
}catch(Exception e)
{
System.out.println(“B ERROR!”);
}
System.out.println(“BBBB”);
}
}
class C implements Runnable
{
public void run()
{
try
{
Thread.sleep(3000);
}catch(Exception e)
{
System.out.println(“C ERROR!”);
}
System.out.println(“CCCC”);
}
}
案例一的两种方法已经写好;现在有事,晚上再把案例二代码写一下,应该没关系吧!
抱歉,是一个线程类,我看错了,晚上重发一下代码!
如何利用Java语言实现消息推送到手机app
首先APP后台就得有这样的轮询程序,比如每次打开app时触发,比如每隔10分钟触发,每次触发就调用下服务器端的服务,服务端去拉取要推送的信息,或者知道对方的手机号或微信号,那就直接调用短信接口或直接发送微信信息了。
极光推送服务是一款免费的第三方推送消息的平台。极光推送从整体来说还不错,具有以下优势:
1、开放注册,免费向所有的开发者开放使用。
2、极光推送 – JPush SDK
JPush 是经过考验的大规模 App 推送平台,每天推送消息量级为数百亿条。 开发者集成 SDK 后,可以通过调用 API 推送消息。同时,JPush 提供可视化的 web 端控制台发送通知,统计分析推送效果。
3、开发者可以轻松地通过极光发送各个移动平台的系统通知,还可以在控制台编辑多种富文本展示模板; 极光还提供自定义消息的透传,客户端接到消息内容后根据自己的逻辑自由处理。
4、7*24小时专人专线服务:专属安全团队支持,24 小时随时响应,免除后顾之忧。
极光是一个不错的选择,深圳市和讯华谷信息技术有限公司(极光 Aurora Mobile,纳斯达克股票代码:JG)成立于2011年,是中国领先的开发者服务提供商,专注于为开发者提供稳定高效的消息推送、一键认证以及流量变现等服务,助力开发者的运营、增长与变现。
同时,极光的行业应用已经拓展至市场洞察、金融风控与商业地理服务,助力各行各业优化决策、提升效率。
高分:求案例代码:java Socket 加请求参数,访问http服务端,并打印返回的数据!
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
public class Client extends JFrame
{
/**
*
*/
private static final long serialVersionUID = -4733717749265129757L;
Container con=null;
JTextArea jta = null;
JTextField jtf = null;
//ArrayList al = new ArrayList();
//ServerSocket ss = null;
Socket s = null;
Client(String ip,int port)
{
try
{
s = new Socket(ip,port); //创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
launchFrame();
}
catch(Exception e)
{
e.printStackTrace();
}
new Thread(new ClientR()).start();
}
public void sent(String str)
{ //发送消息方法
try
{
DataOutputStream dos = new DataOutputStream(s.getOutputStream()); // 创建一个新的数据输出流,将数据写入指定 返回s的套接字的输出流。
dos.writeUTF(str);
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void disconnect() throws Exception
{
s.close(); //失去连接,关闭线程s
}
class ClientR implements Runnable
{//客户端运行
/*Runnable 接口应该由那些打算通过某一线程执行其实例的类来实现。类必须定义一个称为 run 的无参数方法。
设计该接口的目的是为希望在活动时执行代码的对象提供一个公共协议。例如,Thread 类实现了 Runnable。
激活的意思是说某个线程已启动并且尚未停止。
此外,Runnable 为非 Thread 子类的类提供了一种激活方式。
通过实例化某个 Thread 实例并将自身作为运行目标,就可以运行实现 Runnable 的类而无需创建 Thread 的子类。
大多数情况下,如果只想重写 run() 方法,而不重写其他 Thread 方法,那么应使用 Runnable 接口。这很重要,
因为除非程序员打算修改或增强类的基本行为,否则不应为该类创建子类。
*/
public void run()
{
try
{
DataInputStream dis = new DataInputStream(s.getInputStream());//使用指定的底层 s.getInputStream(s的套接字的输入流) 创建一个 DataInputStream(数据输入流)
String str = dis.readUTF();
while(true)
{
jta.append(str+”\n”);
str = dis.readUTF();
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
public void startClient()
{ //客户端启用
try
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //读取数据流
String str = br.readLine();
System.out.println(str);
while(true)
{
sent(str); //发送数据
if(str.equals(“q”))
{ //如果读取的字符为q
disconnect(); //断开连接
return ;
}
str=br.readLine();
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void launchFrame() throws IOException
{ //客户端面板布局
con = this.getContentPane();
jta = new JTextArea();
jtf = new JTextField();
final JTextField jtf1=new JTextField(10);
final JButton jb=new JButton(“确认”);
Panel p=new Panel();
//Panel p1=new Panel();
JLabel jl=new JLabel();
jl.setText(“your name:”);
//jl.getVerticalTextPosition();
jtf1.setBackground(Color.PINK);
jtf1.setBounds(10, 10, 10, 10);
p.add(jl);
p.add(jtf1);
p.add(jb);
jb.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
//e.getWhen();
e.getActionCommand();
jtf.setText(jtf1.getText().toString()+”say:”);
}
});
jta.setBackground(Color.LIGHT_GRAY);
jta.setEditable(false); //不可编辑文本域
JScrollPane jsp = new JScrollPane(jta, //jta上滚动条的创建
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
//con.add(jb,BorderLayout.WEST);
con.add(jsp,BorderLayout.CENTER);
con.add(p,BorderLayout.NORTH);
con.add(jtf,BorderLayout.SOUTH);
jtf.addActionListener(new ActionListener()
{ ///事件监听
public void actionPerformed(ActionEvent e)
{
String str = jtf.getText().toString();
Client.this.sent(str);
jtf.setText(jtf1.getText().toString()+”say:”);
}
});
this.setTitle(“聊天客户端,袭风版”);
this.setBounds(200,200,300,400);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setBackground(Color.blue);
this.setVisible(true);
}
public static void main (String[] args)
{
System.out.println(“===1”);
Client cli = new Client(“127.168.1.1”,3456); //创建一个客户端,并将其连接到指定 IP 地址的指定端口号,其端口号与服务器端一致。与服务器建立连接
System.out.println(“===2”);
cli.startClient(); //127.0.0.1为本机端口
}
}
//
//import java.net.*;
//import java.io.*;
//
///*
// 发送给服务器端
//*/
//class Send implements Runnable
//{
// private Socket socket;
// Send(Socket socket)
// {
// this.socket = socket;
// }
// public void run()
// {
// try
// {
// BufferedReader bufr =
// new BufferedReader(new InputStreamReader(System.in));
//
// String line = null;
// while((line=bufr.readLine())!=null)
// {
// if(“886”.equals(line))
// {
// socket.close();
// break;
// }
// byte[] bufString = line.getBytes();
//
// //通过socket对象获取socket流中的输出流对象。
// OutputStream out = socket.getOutputStream();
// out.write(bufString);
//
// InputStream in = socket.getInputStream();
// byte[] buf = new byte[1024];
// int num = in.read(buf);
// String str = new String(buf,0,num);
//
// System.out.println(“server:”+str);
// }
//
//
// }
// catch (Exception e)
// {
// System.out.println(e.toString());
// }
// }
//}
//
///*
// 建立服务器
//*/
//class Rece implements Runnable
//{
// //1,建立服务端的socket服务。并监听一个端口。以获取客户端发来的数据。
// private ServerSocket serverSocket;
// Rece(ServerSocket serverSocket)
// {
// this.serverSocket = serverSocket;
// }
// public void run()
// {
// try
// {
// while(true){
// System.out.println(“============4”);
// Socket socket = serverSocket.accept();
// System.out.println(“============5”);
// String ip = socket.getInetAddress().getHostAddress();
// System.out.println(“============6”);
// System.out.println(ip+”…connected”);
// System.out.println(“============7”);
// BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// System.out.println(“============8”);
// String line =””;
// System.out.println(“============9”);
//
// OutputStream out = socket.getOutputStream();
// out.write(“开始”.getBytes());
//
// while((line= in.readLine())!=null){
// System.out.println(line);
// }
//
// }
// }
// catch (Exception e)
// {
// System.out.println(e.toString());
// }
// }
//}
//
//
//class ChatDemoServer
//{
// public static void main(String[] args) throws Exception
// {
// //1,建立服务端的socket服务。并监听一个端口。以获取客户端发来的数据。
// System.out.println(“========1”);
// ServerSocket rece = new ServerSocket(8082);
// rece.close();
// System.out.println(“========2”);
// new Thread(new Rece(rece)).start();
// System.out.println(“========3”);
// }
//}
//
//
//class ChatClient
//{
// public static void main(String[] args) throws Exception
// {
// //1,建立服务端的socket服务。并监听一个端口。以获取客户端发来的数据。
// //建立客户端socket服务。并去连接指定的服务端。
// Socket send = new Socket(“169.254.1.60”,10086);
// if(send == null){
// System.out.println(“【创建Socket失败!】”);
// return;
// }
// new Thread(new Send(send)).start();
// }
//}
import java.net.*;
import java.io.*;
import java.util.*;
//import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
public class Server extends JFrame
{
/**
* 套接字接口可分为三类:公认端口 注册端口 动态和/或私有端口
套接字,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程
*/
private static final long serialVersionUID = 4130666237241201704L;
Container con = null; //容器
JTextArea jta = null; //文本区
ServerSocket ss = null; //初始化服务器套接字
ArrayList al = new ArrayList();//ArrayList容器
Server(int port)
{ //构造函数
try
{
ss=new ServerSocket(port); // 创建绑定到特定端口的服务器套接字。
}
catch(Exception e)
{
e.printStackTrace();
}
launchFrame();
}
public void severStart()
{ //线程开始
while(true)
{
try{
Socket s = ss.accept(); //侦听并接受到此套接字(port)的连接。
al.add(new ServerR(s));
jta.append(“New Client:”+”\n Ip: “+s.getInetAddress()+”:”+s.getPort()+”\n” //得到客户端本地地址,端口和客户端数量
+”Clients count:”+al.size()+”\n”);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
class ServerR implements Runnable
{
Socket s = null; //创建新服务线程
ServerR(Socket s)
{
this.s = s;
new Thread(this).start();//启动新线程
}
public void sent(String str)
{ //发送数据流方法
try
{
DataOutputStream dos = new DataOutputStream(s.getOutputStream()); //从s套接字中读出输出数据流
dos.writeUTF(str); //使用 UTF-8 修改版编码将一个字符串写入基础输出流。
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void run()
{
try
{
DataInputStream dis = new DataInputStream(s.getInputStream());
String str = dis.readUTF(); //读出输入的数据流
while(true)
{
// System.out.println (str);
Iterator ite = al.iterator(); //生成list迭代器
while(ite.hasNext())
{ //如果仍有可迭代的元素,返回true
((ServerR)ite.next()).sent(str); //返回(ServerR)的下一个元素,并发送它
//先遍历ServerR中的所有线程
}
str=dis.readUTF();
}
}
catch(Exception e)
{
try{ //客户端关闭捕捉
s.close(); //关闭一个相关客户端线程
al.remove(this); //从迭代器指向的集合中移除迭代器返回的最后一个元素
jta.append(“A client quit!\nClients count:”+al.size()+”\n”); //统计客户端现有的数量
}
catch(Exception e2)
{
e2.printStackTrace();
}
e.printStackTrace();
}
}
}
public void launchFrame()
{ //服务器端面板布局
con = this.getContentPane();
jta = new JTextArea();
jta.setEditable(false); //不可编辑文本域
JScrollPane jsp = new JScrollPane(jta,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
con.add(jsp,BorderLayout.CENTER);
this.setTitle(“聊天服务端,袭风版”);
this.setBounds(200,200,300,400);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main (String[] args)
{
Server s = new Server(3456); //创建服务器S 端口为3456
s.severStart();
}
}
原创文章,作者:J3C3G,如若转载,请注明出处:https://www.506064.com/n/128080.html